From 10ff64cef3503bafa8e27fd154e24218b0d953d5 Mon Sep 17 00:00:00 2001 From: includeleec Date: Sat, 31 Jul 2021 11:43:01 +0800 Subject: [PATCH 1/5] add Team-7-DeDrops project --- projects/Team-7-DeDrops/README.md | 42 +++++++++++++++++++++++++++++++ projects/Team-7-DeDrops/contract | 1 + projects/Team-7-DeDrops/interface | 1 + projects/Team-7-DeDrops/server | 1 + 4 files changed, 45 insertions(+) create mode 100644 projects/Team-7-DeDrops/README.md create mode 160000 projects/Team-7-DeDrops/contract create mode 160000 projects/Team-7-DeDrops/interface create mode 160000 projects/Team-7-DeDrops/server diff --git a/projects/Team-7-DeDrops/README.md b/projects/Team-7-DeDrops/README.md new file mode 100644 index 0000000..607fc9c --- /dev/null +++ b/projects/Team-7-DeDrops/README.md @@ -0,0 +1,42 @@ +# Code +合约 +前端 +后端 + +# Website +https://www.dedrops.xyz/ + +# Slides +https://docs.google.com/presentation/d/1dwwCJLSBYfOtnZ1ZwI2YQFL2QqlGhIfV8cQoq2cRlDo/edit?usp=sharing + +# 流程说明 + + + + + + + +# FAQ +### 为什么先筛选用户空投NFT,再对NFT持有人空投Token,直接筛选用户空投Token不好吗? +NTF是身份的象征,类似勋章,空投活动仅需要组合各类NFT便得到用户画像,避免重复筛选用户。 + +链上地址的历史记录通过铸造出 NFT 可以将记录保存、流转。 + +通过 DeDrops 铸造出的 NFT 如果被用在 DeDrops 发起的空投活动中,会被关联起来,NFT 被调用的次数多,说明该 NFT 得到认可,NFT 就产生了价值。 + +随着越来越多的NFT铸造出来,用户画像越来越准确,Token能够更精确空投给目标人群,能得到更多更有价值的Token空投,NFT就越有价值。 + + +### 为什么要用离线签名?有什么优势和劣势? +离线签名可以免gas费,且处理速度很快,即使是给10万地址进行空投,大约几分钟就可以完成。如果空投给10万用户,不用离线签名的话,gas费是一笔不小的费用,且10万个交易上链也要花费很长时间。 + +劣势的话大概是技术会比较复杂,不过我们已经解决了。 + + +### DeDrops的去中心化怎么说? +不论空投NFT还是Token,都是项目方直接调用合约上链,包括空投详情和领取条件也都在链上;领取的时候也是用户直接调用合约上链;合约没有治理的接口,合约的owner仅用于离线签名不需要上链,未来owner将使用多签钱包,使项目更加去中心化。 + +### DeDrops开发了多久?未来有什么计划? +2021年7月29号开始开发,之前做了一些框架和开发环境的准备,为了参加Layer2黑客松,7月31号第一个版本上线到Polygon。未来将部署到多条链上,用NFT的创意和免gas费及去中心化的优势,让更多的项目方使用DeDrops,使DeDrops成为用户流量入口。 + diff --git a/projects/Team-7-DeDrops/contract b/projects/Team-7-DeDrops/contract new file mode 160000 index 0000000..eade23e --- /dev/null +++ b/projects/Team-7-DeDrops/contract @@ -0,0 +1 @@ +Subproject commit eade23ee30b398051c0bfb3ff20211ef236fcdf1 diff --git a/projects/Team-7-DeDrops/interface b/projects/Team-7-DeDrops/interface new file mode 160000 index 0000000..bd6a510 --- /dev/null +++ b/projects/Team-7-DeDrops/interface @@ -0,0 +1 @@ +Subproject commit bd6a510f76cda6982fb2741e894a8809aaeee5e6 diff --git a/projects/Team-7-DeDrops/server b/projects/Team-7-DeDrops/server new file mode 160000 index 0000000..a554067 --- /dev/null +++ b/projects/Team-7-DeDrops/server @@ -0,0 +1 @@ +Subproject commit a5540671accb31ed55f70fc0dbf996565dd767fd From 958c23d046a4bce7a5c48f12784a20eada5b90ce Mon Sep 17 00:00:00 2001 From: includeleec Date: Sat, 31 Jul 2021 11:46:53 +0800 Subject: [PATCH 2/5] add Team-7-DeDrops project again --- projects/Team-7-DeDrops/contract | 1 - projects/Team-7-DeDrops/contract/.DS_Store | Bin 0 -> 6148 bytes .../Team-7-DeDrops/contract/.gitattributes | 2 + projects/Team-7-DeDrops/contract/.gitignore | 5 + projects/Team-7-DeDrops/contract/README.md | 140 + ...345\222\214\351\242\206\345\217\226.xmind" | Bin 0 -> 110880 bytes ...345\222\214\351\242\206\345\217\226.xmind" | Bin 0 -> 112923 bytes ...345\205\250\346\265\201\347\250\213.xmind" | Bin 0 -> 158192 bytes ...10\252\345\261\2172021-07-31 01.27.11.png" | Bin 0 -> 284397 bytes ...10\252\345\261\2172021-07-31 01.30.14.png" | Bin 0 -> 179762 bytes ...10\252\345\261\2172021-07-31 01.30.39.png" | Bin 0 -> 154918 bytes .../contract/artifacts/.DS_Store | Bin 0 -> 6148 bytes .../access/Ownable.sol/Ownable.dbg.json | 4 + .../contracts/access/Ownable.sol/Ownable.json | 63 + .../introspection/ERC165.sol/ERC165.dbg.json | 4 + .../introspection/ERC165.sol/ERC165.json | 30 + .../IERC165.sol/IERC165.dbg.json | 4 + .../introspection/IERC165.sol/IERC165.json | 30 + .../math/SafeMath.sol/SafeMath.dbg.json | 4 + .../contracts/math/SafeMath.sol/SafeMath.json | 10 + .../ERC1155/ERC1155.sol/ERC1155.dbg.json | 4 + .../token/ERC1155/ERC1155.sol/ERC1155.json | 334 + .../ERC1155Receiver.dbg.json | 4 + .../ERC1155Receiver.sol/ERC1155Receiver.json | 108 + .../ERC1155/IERC1155.sol/IERC1155.dbg.json | 4 + .../token/ERC1155/IERC1155.sol/IERC1155.json | 304 + .../IERC1155MetadataURI.dbg.json | 4 + .../IERC1155MetadataURI.json | 323 + .../IERC1155Receiver.dbg.json | 4 + .../IERC1155Receiver.json | 108 + .../token/ERC20/IERC20.sol/IERC20.dbg.json | 4 + .../token/ERC20/IERC20.sol/IERC20.json | 194 + .../token/ERC721/ERC721.sol/ERC721.dbg.json | 4 + .../token/ERC721/ERC721.sol/ERC721.json | 426 + .../token/ERC721/IERC721.sol/IERC721.dbg.json | 4 + .../token/ERC721/IERC721.sol/IERC721.json | 296 + .../IERC721Enumerable.dbg.json | 4 + .../IERC721Enumerable.json | 352 + .../IERC721Metadata.dbg.json | 4 + .../IERC721Metadata.sol/IERC721Metadata.json | 341 + .../IERC721Receiver.dbg.json | 4 + .../IERC721Receiver.sol/IERC721Receiver.json | 45 + .../utils/Address.sol/Address.dbg.json | 4 + .../contracts/utils/Address.sol/Address.json | 10 + .../utils/Context.sol/Context.dbg.json | 4 + .../contracts/utils/Context.sol/Context.json | 10 + .../EnumerableMap.sol/EnumerableMap.dbg.json | 4 + .../EnumerableMap.sol/EnumerableMap.json | 10 + .../EnumerableSet.sol/EnumerableSet.dbg.json | 4 + .../EnumerableSet.sol/EnumerableSet.json | 10 + .../utils/Strings.sol/Strings.dbg.json | 4 + .../contracts/utils/Strings.sol/Strings.json | 10 + .../0dd04f69c7ba76001cb35213866bc8f5.json | 85642 ++++++++++++++++ .../4aacc3b670db955d3261359ab52c871b.json | 4422 + .../635883b35bf7d1915fb55ff78885e0c2.json | 8258 ++ .../90d96dae6a1ddcdbb3ac104035e2e01f.json | 3601 + .../contract/artifacts/contracts/.DS_Store | Bin 0 -> 6148 bytes .../contracts/Bank1155.sol/Bank1155.dbg.json | 4 + .../contracts/Bank1155.sol/Bank1155.json | 476 + .../contracts/Bank20.sol/Bank20.dbg.json | 4 + .../contracts/Bank20.sol/Bank20.json | 352 + .../DeDropsERC.sol/DeDropsERC.dbg.json | 4 + .../contracts/DeDropsERC.sol/DeDropsERC.json | 204 + .../DeDropsNFT.sol/DeDropsNFT.dbg.json | 4 + .../contracts/DeDropsNFT.sol/DeDropsNFT.json | 500 + .../interfaces/IERC20.sol/IERC20.dbg.json | 4 + .../interfaces/IERC20.sol/IERC20.json | 184 + .../SafeERC20.sol/SafeERC20.dbg.json | 4 + .../libraries/SafeERC20.sol/SafeERC20.json | 30 + .../libraries/SafeMath.sol/SafeMath.dbg.json | 4 + .../libraries/SafeMath.sol/SafeMath.json | 10 + .../SafeMath.sol/SafeMath128.dbg.json | 4 + .../libraries/SafeMath.sol/SafeMath128.json | 10 + .../test/MockERC20.sol/MockERC20.dbg.json | 4 + .../test/MockERC20.sol/MockERC20.json | 342 + .../test/TestNFT1155.sol/TestNFT1155.dbg.json | 4 + .../test/TestNFT1155.sol/TestNFT1155.json | 384 + .../test/TestNFT721.sol/TestNFT721.dbg.json | 4 + .../test/TestNFT721.sol/TestNFT721.json | 410 + .../contracts/test/WETH9.sol/WETH9.dbg.json | 4 + .../contracts/test/WETH9.sol/WETH9.json | 291 + .../contract/contracts/Bank1155.sol | 153 + .../contract/contracts/Bank20.sol | 96 + .../contract/contracts/DeDropsERC.sol | 43 + .../contract/contracts/DeDropsNFT.sol | 52 + .../contract/contracts/interfaces/IERC20.sol | 14 + .../contracts/libraries/SafeERC20.sol | 31 + .../contract/contracts/libraries/SafeMath.sol | 17 + .../contract/contracts/test/MockERC20.sol | 97 + .../contract/contracts/test/TestNFT1155.sol | 19 + .../contract/contracts/test/TestNFT721.sol | 9 + .../contract/contracts/test/WETH9.sol | 756 + .../Team-7-DeDrops/contract/hardhat.config.js | 107 + .../Team-7-DeDrops/contract/package-lock.json | 27811 +++++ projects/Team-7-DeDrops/contract/package.json | 22 + .../contract/scripts/deploy-bank20.js | 235 + .../contract/scripts/deploy-dedropsERC.js | 108 + .../contract/scripts/deploy-dedropsNFT.js | 141 + .../contract/test/bank1155-test | 178 + .../Team-7-DeDrops/contract/test/bank20-test | 168 + .../contract/test/drop-erc-test.js | 152 + .../contract/test/drop-nft-test.js | 138 + projects/Team-7-DeDrops/interface | 1 - .../interface/.github/workflows/main.yml | 12 + projects/Team-7-DeDrops/interface/.gitignore | 28 + .../interface/.vscode/settings.json | 4 + .../Team-7-DeDrops/interface/CHANGELOG.md | 81 + .../interface/ISSUE_TEMPLATE.md | 13 + projects/Team-7-DeDrops/interface/LICENSE.md | 9 + projects/Team-7-DeDrops/interface/README.md | 11 + .../interface/components/Account.js | 90 + .../components/Cards/CardAirdropApply.js | 629 + .../components/Cards/CardAirdropsTable.js | 156 + .../interface/components/Cards/CardNFTItem.js | 45 + .../interface/components/Cards/CardNFTMint.js | 331 + .../interface/components/ETHBalance.js | 11 + .../interface/components/Footers/Footer.js | 62 + .../components/Navbars/IndexNavbar.js | 82 + .../interface/components/Tabs/AirdropsTabs.js | 43 + .../interface/components/Tabs/NFTTabs.js | 43 + .../Team-7-DeDrops/interface/connectors.js | 5 + .../interface/constans/abi/Airdrop.js | 184 + .../interface/constans/abi/Bank1155.js | 467 + .../interface/constans/abi/Bank20.js | 343 + .../interface/constans/abi/DeDropsNFT.js | 486 + .../interface/constans/abi/IERC20.js | 185 + .../interface/hooks/useBlockNumber.js | 17 + .../interface/hooks/useContract.js | 19 + .../interface/hooks/useENSName.js | 29 + .../interface/hooks/useERC20Contract.js | 11 + .../interface/hooks/useETHBalance.js | 28 + .../interface/hooks/useEagerConnect.js | 30 + .../hooks/useKeepSWRDataLiveAsBlocksArrive.js | 18 + .../interface/hooks/usePersonalSign.js | 12 + .../Team-7-DeDrops/interface/jsconfig.json | 5 + .../Team-7-DeDrops/interface/layouts/Main.js | 21 + .../interface/libs/airdropConfig.js | 49 + .../interface/libs/contracts.js | 10 + .../interface/libs/getContract.js | 13 + .../interface/libs/nftConfig.js | 126 + .../Team-7-DeDrops/interface/libs/web3Util.js | 94 + .../Team-7-DeDrops/interface/package.json | 64 + .../Team-7-DeDrops/interface/pages/404.js | 12 + .../Team-7-DeDrops/interface/pages/_app.js | 49 + .../interface/pages/_document.js | 28 + .../Team-7-DeDrops/interface/pages/_error.js | 12 + .../interface/pages/airdrops/[id].js | 260 + .../interface/pages/airdrops/apply.js | 23 + .../Team-7-DeDrops/interface/pages/index.js | 211 + .../Team-7-DeDrops/interface/pages/landing.js | 568 + .../Team-7-DeDrops/interface/pages/nft.js | 190 + .../interface/pages/nft/[id].js | 227 + .../interface/pages/nft/mint.js | 23 + .../interface/public/img/brand/drop.svg | 46 + .../interface/public/img/github.svg | 12 + .../interface/public/img/google.svg | 17 + .../interface/public/img/l2hack.png | Bin 0 -> 316049 bytes .../Team-7-DeDrops/interface/styles/index.css | 5 + .../interface/styles/tailwind.css | 4180 + .../interface/tailwind.config.js | 136 + projects/Team-7-DeDrops/interface/yarn.lock | 13335 +++ projects/Team-7-DeDrops/server | 1 - projects/Team-7-DeDrops/server/.gitattributes | 2 + projects/Team-7-DeDrops/server/.gitignore | 3 + projects/Team-7-DeDrops/server/README.md | 81 + projects/Team-7-DeDrops/server/app.js | 48 + .../server/app/controller/address.js | 52 + .../server/app/schedule/context.js | 28 + .../server/app/schedule/dropnft.js | 48 + .../server/app/schedule/subscription.js | 43 + .../server/app/service/chainlink.js | 47 + .../server/app/service/context.js | 45 + .../Team-7-DeDrops/server/app/service/eth.js | 45 + .../server/app/service/graph.js | 32 + .../Team-7-DeDrops/server/app/service/nft.js | 49 + .../server/app/service/polygon.js | 45 + .../server/app/service/service.js | 19 + .../Team-7-DeDrops/server/package-lock.json | 1602 + projects/Team-7-DeDrops/server/package.json | 26 + .../server/res/abi/Bank1155.json | 476 + .../Team-7-DeDrops/server/res/abi/Bank20.json | 352 + .../server/res/abi/Chainlink.json | 547 + .../server/res/abi/DeDropsERC.json | 197 + .../server/res/abi/DeDropsNFT.json | 495 + .../Team-7-DeDrops/server/res/abi/ERC20.json | 206 + .../Team-7-DeDrops/server/routes/model/db.js | 129 + .../Team-7-DeDrops/server/routes/signTest.js | 59 + .../server/routes/tools/sign.js | 106 + .../server/routes/tools/utils.js | 21 + .../Team-7-DeDrops/server/routes/upload.js | 111 + .../Team-7-DeDrops/server/test/bigtest.js | 69 + projects/Team-7-DeDrops/server/test/dbtest.js | 75 + .../Team-7-DeDrops/server/test/locktest.js | 106 + 193 files changed, 167116 insertions(+), 3 deletions(-) delete mode 160000 projects/Team-7-DeDrops/contract create mode 100644 projects/Team-7-DeDrops/contract/.DS_Store create mode 100644 projects/Team-7-DeDrops/contract/.gitattributes create mode 100644 projects/Team-7-DeDrops/contract/.gitignore create mode 100644 projects/Team-7-DeDrops/contract/README.md create mode 100644 "projects/Team-7-DeDrops/contract/XMind/NFT\351\223\270\351\200\240\345\222\214\351\242\206\345\217\226.xmind" create mode 100644 "projects/Team-7-DeDrops/contract/XMind/token\347\232\204\347\251\272\346\212\225\345\222\214\351\242\206\345\217\226.xmind" create mode 100644 "projects/Team-7-DeDrops/contract/XMind/\345\205\250\346\265\201\347\250\213.xmind" create mode 100644 "projects/Team-7-DeDrops/contract/XMind/\346\210\252\345\261\2172021-07-31 01.27.11.png" create mode 100644 "projects/Team-7-DeDrops/contract/XMind/\346\210\252\345\261\2172021-07-31 01.30.14.png" create mode 100644 "projects/Team-7-DeDrops/contract/XMind/\346\210\252\345\261\2172021-07-31 01.30.39.png" create mode 100644 projects/Team-7-DeDrops/contract/artifacts/.DS_Store create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/build-info/0dd04f69c7ba76001cb35213866bc8f5.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/build-info/4aacc3b670db955d3261359ab52c871b.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/build-info/635883b35bf7d1915fb55ff78885e0c2.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/build-info/90d96dae6a1ddcdbb3ac104035e2e01f.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/.DS_Store create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.dbg.json create mode 100644 projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.json create mode 100644 projects/Team-7-DeDrops/contract/contracts/Bank1155.sol create mode 100644 projects/Team-7-DeDrops/contract/contracts/Bank20.sol create mode 100644 projects/Team-7-DeDrops/contract/contracts/DeDropsERC.sol create mode 100644 projects/Team-7-DeDrops/contract/contracts/DeDropsNFT.sol create mode 100755 projects/Team-7-DeDrops/contract/contracts/interfaces/IERC20.sol create mode 100755 projects/Team-7-DeDrops/contract/contracts/libraries/SafeERC20.sol create mode 100755 projects/Team-7-DeDrops/contract/contracts/libraries/SafeMath.sol create mode 100755 projects/Team-7-DeDrops/contract/contracts/test/MockERC20.sol create mode 100644 projects/Team-7-DeDrops/contract/contracts/test/TestNFT1155.sol create mode 100644 projects/Team-7-DeDrops/contract/contracts/test/TestNFT721.sol create mode 100755 projects/Team-7-DeDrops/contract/contracts/test/WETH9.sol create mode 100644 projects/Team-7-DeDrops/contract/hardhat.config.js create mode 100644 projects/Team-7-DeDrops/contract/package-lock.json create mode 100644 projects/Team-7-DeDrops/contract/package.json create mode 100644 projects/Team-7-DeDrops/contract/scripts/deploy-bank20.js create mode 100644 projects/Team-7-DeDrops/contract/scripts/deploy-dedropsERC.js create mode 100644 projects/Team-7-DeDrops/contract/scripts/deploy-dedropsNFT.js create mode 100644 projects/Team-7-DeDrops/contract/test/bank1155-test create mode 100644 projects/Team-7-DeDrops/contract/test/bank20-test create mode 100644 projects/Team-7-DeDrops/contract/test/drop-erc-test.js create mode 100644 projects/Team-7-DeDrops/contract/test/drop-nft-test.js delete mode 160000 projects/Team-7-DeDrops/interface create mode 100644 projects/Team-7-DeDrops/interface/.github/workflows/main.yml create mode 100644 projects/Team-7-DeDrops/interface/.gitignore create mode 100644 projects/Team-7-DeDrops/interface/.vscode/settings.json create mode 100644 projects/Team-7-DeDrops/interface/CHANGELOG.md create mode 100644 projects/Team-7-DeDrops/interface/ISSUE_TEMPLATE.md create mode 100644 projects/Team-7-DeDrops/interface/LICENSE.md create mode 100644 projects/Team-7-DeDrops/interface/README.md create mode 100644 projects/Team-7-DeDrops/interface/components/Account.js create mode 100644 projects/Team-7-DeDrops/interface/components/Cards/CardAirdropApply.js create mode 100644 projects/Team-7-DeDrops/interface/components/Cards/CardAirdropsTable.js create mode 100644 projects/Team-7-DeDrops/interface/components/Cards/CardNFTItem.js create mode 100644 projects/Team-7-DeDrops/interface/components/Cards/CardNFTMint.js create mode 100644 projects/Team-7-DeDrops/interface/components/ETHBalance.js create mode 100644 projects/Team-7-DeDrops/interface/components/Footers/Footer.js create mode 100644 projects/Team-7-DeDrops/interface/components/Navbars/IndexNavbar.js create mode 100644 projects/Team-7-DeDrops/interface/components/Tabs/AirdropsTabs.js create mode 100644 projects/Team-7-DeDrops/interface/components/Tabs/NFTTabs.js create mode 100644 projects/Team-7-DeDrops/interface/connectors.js create mode 100644 projects/Team-7-DeDrops/interface/constans/abi/Airdrop.js create mode 100644 projects/Team-7-DeDrops/interface/constans/abi/Bank1155.js create mode 100644 projects/Team-7-DeDrops/interface/constans/abi/Bank20.js create mode 100644 projects/Team-7-DeDrops/interface/constans/abi/DeDropsNFT.js create mode 100644 projects/Team-7-DeDrops/interface/constans/abi/IERC20.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useBlockNumber.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useContract.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useENSName.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useERC20Contract.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useETHBalance.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useEagerConnect.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/useKeepSWRDataLiveAsBlocksArrive.js create mode 100644 projects/Team-7-DeDrops/interface/hooks/usePersonalSign.js create mode 100644 projects/Team-7-DeDrops/interface/jsconfig.json create mode 100644 projects/Team-7-DeDrops/interface/layouts/Main.js create mode 100644 projects/Team-7-DeDrops/interface/libs/airdropConfig.js create mode 100644 projects/Team-7-DeDrops/interface/libs/contracts.js create mode 100644 projects/Team-7-DeDrops/interface/libs/getContract.js create mode 100644 projects/Team-7-DeDrops/interface/libs/nftConfig.js create mode 100644 projects/Team-7-DeDrops/interface/libs/web3Util.js create mode 100644 projects/Team-7-DeDrops/interface/package.json create mode 100644 projects/Team-7-DeDrops/interface/pages/404.js create mode 100644 projects/Team-7-DeDrops/interface/pages/_app.js create mode 100644 projects/Team-7-DeDrops/interface/pages/_document.js create mode 100644 projects/Team-7-DeDrops/interface/pages/_error.js create mode 100644 projects/Team-7-DeDrops/interface/pages/airdrops/[id].js create mode 100644 projects/Team-7-DeDrops/interface/pages/airdrops/apply.js create mode 100644 projects/Team-7-DeDrops/interface/pages/index.js create mode 100644 projects/Team-7-DeDrops/interface/pages/landing.js create mode 100644 projects/Team-7-DeDrops/interface/pages/nft.js create mode 100644 projects/Team-7-DeDrops/interface/pages/nft/[id].js create mode 100644 projects/Team-7-DeDrops/interface/pages/nft/mint.js create mode 100644 projects/Team-7-DeDrops/interface/public/img/brand/drop.svg create mode 100644 projects/Team-7-DeDrops/interface/public/img/github.svg create mode 100644 projects/Team-7-DeDrops/interface/public/img/google.svg create mode 100644 projects/Team-7-DeDrops/interface/public/img/l2hack.png create mode 100644 projects/Team-7-DeDrops/interface/styles/index.css create mode 100644 projects/Team-7-DeDrops/interface/styles/tailwind.css create mode 100644 projects/Team-7-DeDrops/interface/tailwind.config.js create mode 100644 projects/Team-7-DeDrops/interface/yarn.lock delete mode 160000 projects/Team-7-DeDrops/server create mode 100644 projects/Team-7-DeDrops/server/.gitattributes create mode 100644 projects/Team-7-DeDrops/server/.gitignore create mode 100644 projects/Team-7-DeDrops/server/README.md create mode 100644 projects/Team-7-DeDrops/server/app.js create mode 100644 projects/Team-7-DeDrops/server/app/controller/address.js create mode 100644 projects/Team-7-DeDrops/server/app/schedule/context.js create mode 100644 projects/Team-7-DeDrops/server/app/schedule/dropnft.js create mode 100644 projects/Team-7-DeDrops/server/app/schedule/subscription.js create mode 100644 projects/Team-7-DeDrops/server/app/service/chainlink.js create mode 100644 projects/Team-7-DeDrops/server/app/service/context.js create mode 100644 projects/Team-7-DeDrops/server/app/service/eth.js create mode 100644 projects/Team-7-DeDrops/server/app/service/graph.js create mode 100644 projects/Team-7-DeDrops/server/app/service/nft.js create mode 100644 projects/Team-7-DeDrops/server/app/service/polygon.js create mode 100644 projects/Team-7-DeDrops/server/app/service/service.js create mode 100644 projects/Team-7-DeDrops/server/package-lock.json create mode 100644 projects/Team-7-DeDrops/server/package.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/Bank1155.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/Bank20.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/Chainlink.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/DeDropsERC.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/DeDropsNFT.json create mode 100644 projects/Team-7-DeDrops/server/res/abi/ERC20.json create mode 100644 projects/Team-7-DeDrops/server/routes/model/db.js create mode 100644 projects/Team-7-DeDrops/server/routes/signTest.js create mode 100644 projects/Team-7-DeDrops/server/routes/tools/sign.js create mode 100644 projects/Team-7-DeDrops/server/routes/tools/utils.js create mode 100644 projects/Team-7-DeDrops/server/routes/upload.js create mode 100644 projects/Team-7-DeDrops/server/test/bigtest.js create mode 100644 projects/Team-7-DeDrops/server/test/dbtest.js create mode 100644 projects/Team-7-DeDrops/server/test/locktest.js diff --git a/projects/Team-7-DeDrops/contract b/projects/Team-7-DeDrops/contract deleted file mode 160000 index eade23e..0000000 --- a/projects/Team-7-DeDrops/contract +++ /dev/null @@ -1 +0,0 @@ -Subproject commit eade23ee30b398051c0bfb3ff20211ef236fcdf1 diff --git a/projects/Team-7-DeDrops/contract/.DS_Store b/projects/Team-7-DeDrops/contract/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f49d16c89ff191facee674102ad4665d1064286c GIT binary patch literal 6148 zcmeHK%Wl&^6ur|X)DA7A5)$1YdBZM54N{4^KnfvUWPyYT0wh4GU8jj#*Av+e5rm-Z z`2tw*3w#G(z_+l1Gmn7nlqHCwxzfxT&)joo?onnYLqx1S@f$={BC=2fmMW;uF)=R6 zimmCMEg+LIj>)AXN-61vE8eEVC}0%$*Ax(Y*T$}mv1|cK5h1|oaI2!Ju)W1tZ zi>QoUE_V8e2Hh~{`MKa}!;4dd=<%8Q0?^}VlO=G#nQ`AHF-vWzc_ER;h$Rj_q)a6q~m(4;1x!QAh zLZvLvrbl#uXdQY0tYg)FekQ3>ma#zzRu)5(u{v*86v=v*;Dh`rEkqRxWc|wY3@Zqr zUtxZcDZ7%%G~?+_ld=A-eDTI%kfgi2U)kDvseEa}vMN?(tMalp;?rL0rjw-Y#?Qsq zLpL3Hy8W2*@Mqigo& + +### 读取接口 idToItem +### 参数 + id 批次id,uint256类型 +### 返回 + id 批次id,uint256类型 + info 描述,string类型 + info2 描述2,string类型 +
+ +### 事件 event Drop(uint indexed id, uint256 amount, string info, string info2) +调用mint就会发起Drop事件,表示是这批NFT已经投放到Bank1155合约,用服务器签名可以领取NFT +
+
+ +### DeDropsERC合约 0xF2F2ed5f790f33e33f48D0e33addb33B002Ab4DF +用于接收空投的ERC20token并且转入Bank20合约,并且把空投信息记录上链 +### 写入接口 drop +### 参数 + token token的合约地址,address类型 + amount 数量,uint256类型 + info 描述,string类型 + info2 描述2,string类型 +### 返回 + 无 +
+ +### 读取接口 idToItem +### 参数 + id 空投活动id,uint256类型 +### 返回 + id 空投活动id,uint256类型 + token token的合约地址,address类型 + amount 数量,uint256类型 + info 描述,string类型 + info2 描述2,string类型 +
+ +### 事件 event Drop(address indexed token, uint256 amount, string info, string info2) +调用drop就会发起Drop事件,表示是这批ERC已经投放到Bank20合约,用服务器签名可以领取ERC +
+
+ +### Bank1155合约 0xc44dc52e259352B6C26AfFcEf9ce280836AD6860 +用于分发NFT,用户提交签名来领取NFT +### 写入接口 claim +### 参数 + token NFT的合约地址,address类型 + id 批次id,uint256类型 + owner 签名者,固定是服务器账户,address类型 + spender 谁来领,一般是调用者自己,address类型 + deadline 过期时间戳,单位秒,uint256类型 + v 签名数据,uint8类型 + r 签名数据,bytes32类型 + s 签名数据,bytes32类型 +### 返回 + 无 +
+ +### 读取接口 nonces +### 参数 + bytes32 签名的digest,bytes32类型 +### 返回 + bool 是否已领取,bool类型 +
+
+ +### Bank20合约 0x13d6f4529c2a003f14cde0a356cee66637cd739a +用于分发ERC20token,用户提交签名来领取token +### 写入接口 claim +### 参数 + token token的合约地址,address类型 + owner 签名者,固定是服务器账户,address类型 + spender 谁来领,一般是调用者自己,address类型 + value 数量,以token的最小单位起算,uint256类型 + deadline 过期时间戳,单位秒,uint256类型 + v 签名数据,uint8类型 + r 签名数据,bytes32类型 + s 签名数据,bytes32类型 +### 返回 + 无 +
+ +### 读取接口 nonces +### 参数 + bytes32 签名的digest,bytes32类型 +### 返回 + bool 是否已领取,bool类型 +
+
+ +## 流程说明 + + + +
+
+ +## 开源代码 +#### 合约 +#### 前端 +#### 后端 +
+
+ +## FAQ +### 为什么先筛选用户空投NFT,再对NFT持有人空投Token,直接筛选用户空投Token不好吗? +NTF是身份的象征,类似勋章,空投活动仅需要组合各类NFT便得到用户画像,避免重复筛选用户。 + +链上地址的历史记录通过铸造出 NFT 可以将记录保存、流转。 + +通过 DeDrops 铸造出的 NFT 如果被用在 DeDrops 发起的空投活动中,会被关联起来,NFT 被调用的次数多,说明该 NFT 得到认可,NFT 就产生了价值。 + +随着越来越多的NFT铸造出来,用户画像越来越准确,Token能够更精确空投给目标人群,能得到更多更有价值的Token空投,NFT就越有价值。 +
+ +### 为什么要用离线签名?有什么优势和劣势? +离线签名可以免gas费,且处理速度很快,即使是给10万地址进行空投,大约几分钟就可以完成。如果空投给10万用户,不用离线签名的话,gas费是一笔不小的费用,且10万个交易上链也要花费很长时间。 + +劣势的话大概是技术会比较复杂,不过我们已经解决了。 +
+ +### DeDrops的去中心化怎么说? +不论空投NFT还是Token,都是项目方直接调用合约上链,包括空投详情和领取条件也都在链上;领取的时候也是用户直接调用合约上链;合约没有治理的接口,合约的owner仅用于离线签名不需要上链,未来owner将使用多签钱包,使项目更加去中心化。 +
+ +### DeDrops开发了多久?未来有什么计划? +2021年7月29号开始开发,之前做了一些框架和开发环境的准备,为了参加Layer2黑客松,7月31号第一个版本上线到Polygon。未来将部署到多条链上,用NFT的创意和免gas费及去中心化的优势,让更多的项目方使用DeDrops,使DeDrops成为用户流量入口。 +
diff --git "a/projects/Team-7-DeDrops/contract/XMind/NFT\351\223\270\351\200\240\345\222\214\351\242\206\345\217\226.xmind" "b/projects/Team-7-DeDrops/contract/XMind/NFT\351\223\270\351\200\240\345\222\214\351\242\206\345\217\226.xmind" new file mode 100644 index 0000000000000000000000000000000000000000..a68f65a0904cefb072bcc695b9045da5ae4b8a07 GIT binary patch literal 110880 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%0A`hMW)V%>1p|?%!#9KG(`}AjGiQZht-B z?5#9kpub+dUGt2v+3LfnHCt=r^0?nYBd9dl@9qY5SN!`E4wN9?kTt3gq*SVgXD}42((b_(O)O~& zZ}uzSU^xEwN;Au9yJy5kcYyxMaw9se&KsAj-@1%>fi*ZDcf8P)2)?h+w>U1>2f4mk zfkNj6L9B;!jCwtRx=wO0PnXg}$obM4;ifZ18}(}* z^7xfntuDW3OF!%Ng$9wy=M`j>X*TPvcX)@p4zbezcO!vPfY%JLCi!?BZjMxA$rV3r zLL)`xqM2Rpjxu~u)M#^SG$q+Akk6NTS4pgAIT%e8h{;rRK!X>?WI8RQC&P#C?(Y5x z+Z zLSnz(XdL@mZFeLoZcn;B9q>9ZS}ZCA$w607&zfAz_rU&p_<`>ZfLeb8wtsy%NB8|e z;b^f|e1#>3mX8iWgF>lGBMgiJcB4=jrtZ_-IdI?j(gLZgeW4iH zEh?K)!_h<`h{m?%M?FDE{xUt{3Dkwo?aw#rJDO8Vz$nM$p1oy(=>Ace!x^4mxv z!e?f48Od5&iSs=7hyDBs-+ZSTLUTDQ#5OV>{0|>dDUENTLLvT(1pWk#c_A;oPclHG zm6)hgwl8BalvsKnZdL9mecAFddkz60*BwIfD3Fx#w-C#i^DmHPd# z*HY;o67p7A77<9U|0nFshj;-^8Rx-46E078bg)?LIVZLzO2tZ4*G*c0fwM$(J}Zz! zemr@1;TKN)uIf^ye!vha;6NMvvQTZLyb*32A!!v|E5~W8*<|0D$?G$%9*rQ^qDSBE zt2>0n1RZv?RA27$da}|i<|T%Y*!XHVCJ=kTptg7jw#E8?=CBUo%%$>Xv-e|;c)}QN z4P$6Db-V4(kkA4~EhIq=;t#pm!s1!<+GfKa9 zLs+PAalhvNMzi?__(#+SH%Wu|f#8>al45eR;<%=}*%L(mO};0`5R2Vj=5}%@mdpnT z7=^ZA55FKb!(yr+qH}r}M_-#APeZ%dEnH*g|CMb)!M7tFvPG)|S^|N~_4Y(jl$~(u z=d|=^Cezp<#6sy@nl7;xE&L{rr*mP&+oKL|h=cLXMnqjy7E28um6+IPpzfIFwK>y%8yR{6#R&STF7z^ zE2bn4eI4ttGZg3Zeg;?t#a#5CbGTkrZ9pAP|NR8A0@?3Pw1xnpjYzx@9fHVaXLOTM zo^E9HGQZr)usid4c+gCtJQTk_4DZGE;LIA+_~J+sL#6Q~{(w6z9fBZY8|m#PBNCii zGNTEM#g#BQxOq*oY1?z>NBO%eGIQ{x59ARnyGg&33LZHxx z_;wSU+pWN~VnMHp7$I!qI$ltlo34# zQ_Lp^*G@D6c2SBv9gyASe|%)DcOjsrcB3%6F42<@3{bKQRbu7hP}w< zf123;{Q!Vhh#TT`tzB7@Qq*P~CS>-P0mwP@?++K4%j_NJ{~+f7NW=d>P5qG1QnY;xWikG-X=o}SvE~# zsL?Ln|EisTNHS*}fG;7W97Z}b!#mS}OjX0N3|{u|0C@0@Q)8 z=lh<3K-)jRQuOhHNL+UhgZ0b*NhvHqk-qwp%(LAc;vG!D04&+UhW(O+6(d4(<+S(xx6$t-a)rkU_d5-j_{YS?* zWh#$Q^!b^hk8%&awOhZx1cR`0sx&ST9~*48gc6ZhEEbXV`@?IEZPwf_Kjldz{YYW4 z!Z)2RK)u!l9UJgxD3t)T<-mDAK1bbq*X??)?sxE8Gp7bicvlAW(C}=K>D=zY9UWi0 zw^geR1(WCvXq_*9Q3k#>R+EA+D_9hD^&i|*jfegAmuJ`KYnnI1LF*2lrV&9di zOk+tMFq69fWY|Oafk-@vU}Ul%jdpv=jHPph02d+nelSg{Qi0p* zPWIaTib%>lY~r z>MsG}s!FYC+`%nyV-$EdOIGc=^A)-U%H`>pEQTYA2k9wK_Q#7T5KyoRTOlgVwmZQO zTyA&PAfP%*ASx@sdULwA#)N09_|Ll5!2_o4Bd_1gQONZ$-Oak?NZ}HUWc6NUciv-08K@**%|t%a5!HOaz7q19IZ4fJI_8` z?Pou4&(#}$_d?LUd0XfPh^(duEE+>!P06YHF zwznk;g>pm108C@Zt^`2#n|ol9hczV->q)j)0xOQiRJlxpjnn1oy={Kje~vymk?_)^ z`jLNoyV3f)%7N^#NHCJ1889QTW_0ZI!&Ne@V>+xf6nVfd(@RaRaSCgV6iqQ|R5IKD zmI+0t1BZhB@^!JsBy3T;)dj`x0}9{iYU^aVHjj@A5>3)Fh1pbI*az2Gc+pBK^}0*| zjO%tqS`T0B3{zARLkptPXqiv9iN+9A5rxCt{t$>1D2OZ=O_#EGb)s(r4Q^Pkmt1aOlBd~oFOLQ(`2jF?|QkXw6nawf=G8L{6<3;1Q0GQm*s{L8% zy4m%%?1MKlTxyHeSPpl}vIWqqc+6(~CLx1U;6^|c3nDK2A4urs1JFmoH)r8q6r_OF zxhQWulu42&q(kKBPa?V@so2~7Uee~I1YPZ34{m+iYnLrbPa+Wt6p3UFr<_sa6?4+=}V6+T04eFyOG*eUV6{a8;|m2|){OV<*3F zluTjP1p?3Si7cN362Ar_g6+Pr&j>VHoY~g{Y0PVIW-!tvrK^=#WUrX-URiBqdw5VT zh%SZOzL7=Jn0y#m{ZE!(KLBDszBQk=rAAQHqodwG3L>PCo-$~+SHOWuW|lTNpt{mci!bR&1wu=-i#8t?uoFH)^T$>QHEI*{Np^kdy(BhF zZqhy}Wip?asZF8P1qX4dlgvS@#yR3u)SCx=~Ow|nFwhO|Jt1t4L$;F^@M zGKcqA{)zH*;91Z$rWjS3hJ7WZ8O#tD#Gl6E(PckMmJBvT8w>n83^_wYl2!-U=BL7^ z9j3;5W*`Z~)yiH*uC#mN0E|c8b!{ABkaC8iV-jtqOR=@loi`iGy{Dqp4#a(ilXm0`>Gf{}V7lBHU*>DQ=fHSV}Z< z*i7dolYj7N5+omzG0K#oz^H_(EQ3Dtw#XMY$J%sG=bti({F^I6k#NYLG~E0@UcFt4-}WKayovwb+ABM2fG( zgU5i{zUkrKKVlOn$l>&9uW7H32|441CHOACZ*>;u5MqHA8PxL|`LzL3>)ku@DCYeE zk1wsR;PavsP;XDyieb z;x3u5gY!pvvLG{TjKBU5%fB~xSZ9gx!d?UQI&B<^}) zoiDa+c5-bkutjvHy*1J6j6Pd(ejLjYiQ2^uXaTg@KZ!D%)+v)w-d5`o@0Z z2C=`3F9B3=+?m`?qQ~q%UF`!ExEc6yOLO)XM_J70y>>@a^Z}Oc&n{Kgs#i9K^gh+u z8V;hayuW3tpX}H2-B-tV8j3$9J+#_CDsU7gut5O>Q{XWLTD_n^j0%KlB^eIeJ=6P$L3!H2Ikm*&NRFWKgo@~?J{slD6#%VwTo%iFM1E^;MAmxe77MP~9B|$*8 z24p@|R+p=S$yJY+dn5akr^!P#05Sqv8YUp%^{;pOe6olk6#en`BPuC^@Fg`ks3^&I zyxjdLg3vD=R3mjC?1TnMvsj8ukJib2+=FM{>Y#eu;^I$vSLehQD;cvIB4Sj^?WW z;5rhOxOa-XP0ez&X-5KpI_#2mTi()A?aHdVIsrD32T#m@vO^-kkPJ8MD(?@76cV{G zfbwu}a9<}*kI9KJE-C4I3z;l2E_a`H{Hy8lDf3r#Rev zfEYYcZ>4>;KhU6E-GfiPVBdKd;@d&}e!4&w1e-yQn+Keb>!|_!7=bJdKxPV0IMTi=;jh9D^ zT>}z8U!LwsmCI5Q&G3i5!N^l+Hq{_nmkLL8#Og!M)E`}39vy!UsUQl$f_fXBF929; zNFyol98u$ADgx80F+m82Y45c-?@%!ZSxBK^qoj~6A_ZQ>{)Eu~WHq>zrJMjj7h)Ce ziaD_}KizL!!O)`Q=&PEiV_zD4X z7ymV&;N>o>A^|Kbmj%Hr*;>9`8#1Ip9p}aEc~HN0F2TFAHuY*3jjM^b!2~~Co0@gY z1ct4@g`t1aUi6G>AS%u@OE?QLsv3Um-~wo?a?NisN5s6}JXTkb%79)&r3eV#r*C>% z{7-QUWU#IFDtEhFu%47~i_gc+n>IG)g=4N{0RxUWvD;FsAbnhCilN1~BZmG=C?Vsq zCz1-o76bVjpF_I{_#)&!vsenWICW;64yb7n*X-jKrcC$T2{qNp_U}X51Lyw%4i_xK>%tBswtAmHkF>=4>I~ zxJ3Fxk|L7YK+l6z72$#i=C6UWg9E_rs@5kfvsB&M0XI4hD~85>;_ImJAx<$s9@pE7 z6Q8%g#s^Y&AmA53|Ag7iQiQ0V3_ta;=FCvL#ux#Ja=t*#WCP%<0n0cktTsPCm?2N1 zYN2lf;$!SYGKV8Ipy0k0{R(1(Ai7-?zX)tc+03tCfR@N%Mqd{DCi2l1;7&50@iouU z#)Ov34I5Moo410Y!I_F#8BH=1;t@EQeSx33-kBN<1q0>0pBe`+B4|9`y<63~caUwX zEtu`cD`lA24<(;3NG{>pk<=r-!o6}H&?X%YUNjX`ES&C5Nz>S|F#eKIr$3w+mTM`8 z$L6M!i}Pp!2U-u(2rg$Kp`%-wCXN)zh8P-yFjcmCe)4CQ-ePDGanwaDkyLOfG@_s} z*i^o>@_IZYtOe{Wo40mlevqCAa-ABW&(4fG0rT>W~`sR-Yg7 zeMm>-iu&2g?DrzkfEGWxN*8zVKPPG;o`DX%-1u^HBrkkESk-t}sUQe4Dxq;<-mDxn z-=0?PJQy4`c)VSLCQ(TlP&1{!wW%erBta5@wBlUu64S+&!~VoB!7UxD(D$0+2gF-**Pl8(ZE%Q&8lb1%0`1=RV{_pn*?<`&ACZs8ckLI zkX1j5{ye<}HR-U!2UHeuE5@ZGeW@7{D_Fqp<#IPRlgKCKYDi^i>$U8r$Gcuh7E&1c z|BRM0kk?Vif)r9XP|RpD`WM2rEB)i%N|%4L&~V1l`{~qMl-&mK%^AluTk2iaVZ0K+OWW)xA-gKuPC%;`=Wqz?@9=0U(U4L+8hcG6zCPzj*J%uo4`P)W`c0B1>i&Rvr)Ln zVw^1Klt9<$Ux_WN-+)>Ks@1MYJ>lw#+vOhU``n26IFroG-{!QHT zfQGDw&Z?}*8IpYYD)`vqM_cFu(fq@)zmqV|zJm25s%m1$`wXO<)pf1*NUJjP6$K%6uquk`*ss%YlX)P$tY|gK+IUxV{^@eMFb zEEZ8c48@q8w)+~%5{P7;+Rx|hE}JfFwGWp24dw>@{>Doc&=!C({KxZFS!MHidLVJe zrO9$t|M8k4(P1+Z(bN`B5)x$lkUjK4qoU@?X}X7Aa=ee$a(l{Z^>4BWtJ>we(Zl%!Bl2ATa;u`7T>AZlrG z4WC?ni`c%GZ7C0=(pF+wH}}Jfk7p=p)%Y1n7rZ5jI1XTL{J1`~{5Fz8l>T-eQW?Vp z@`b}j#d)!YZ%=MO`2bn$6TM@7*q8sg1UyNklXT4)&$1}31k6tT8YU+lD;$^qHsbEUa|;>%Wb@xXrY1$ zPhicDzzxBLXZ&+?P8ZYCiWc(=z|InDeEGe*Yf|l||6K9#r`^j>Y zr#Dc}3J(J;hz-xS{88dxPpYq1THe|2iSyME`pO*eH-67dtbWz zB;t_CPYNO_lQDIJtqthjc5tT@oppc{yC)d)6UZb_^Rd|@UQxB45T)^Q6A;fn+g1t( z4Oe=3`Bu**@_Z@>haj7$T<<0RGk-8tKx5X&cB6xVjpEb2s}&VVb8F z(FCwuSDshuvLFVcgOTN|SPiRvX?Og*fJD+;lN>f}w{J?^yJj}}3TKnu-%+NNmh@?6 z1~%{zI-#T7wSFsQw0P!u>(l5`mO_#J#*HrMFi_w#2h`P2{Z(S@pYdmxXKGwc+E3TK zn`zREN8<5+ZIc9lCU&x(vs-T(MQXS|B5PZ2K(v#_;U{l*O4MqG9?Jh-nrxm?s*#C! zCbI91Bc`}58||fzXx!+AZJ5sa^Tpl5d={4b>9k!vod69uYxvKO;A3-yc5QmzOe)IX z4mWh6kqkzG=O^pK5L8< z#ik!R6s+GV0a3G1?pl1v0~5M|!&}?IqVu(`lpoZOFj0bq*cZBUqQ3d?M~MI9J{v%I zZ82kbXZ~@lVvb$e<4LWJ9U#Milxp*Nl`nIyPmx@|Q03bPW~vbE!y@P5m_4pX^QLdi zyJ>9UWp9IZ&Ewctt8GqzW0t)jmt(!`dKafYcGT{4_;hy+r*u5lTLzEv4u>OR1*Rd2 zXuyleLj@vvOs<_oyPfSNM)=;J^gFi=#H-O*lK&~D8JQ~<*+B4%GJM58AX z*}fB%G&HU>rv|cd(LYb-^uc>L0w?QWnJn_bJ9;{wD4T|J$G8y=7&bVfb#h^yR+#R zx_h|8Jv-zbOF{1ds+v)c8Iyo9I7^HYU;D>|NJq?j<8=K(tA4>5U~z*T?Nee+3T?v!yem6ZOyv34K~sVW#xTp2Qk_*R>Np?)t!6zj!ZM9>kCoB){^E3dY05@UH$ zj$^-T`AV06B>U?+!}HE-{~?VpB}M?%yI2}KYrUo&{w??X?f#w!8V&C^D!$uPoC#mRs{i0T;S+dMIpUXmSFm9lf0Jqi< zEEZz8-i=RG*|HO0m=@v_^HmNBeYX~63(k3Kc!=rTuGC-j7Uh->ln8;Mr6>N9|k2PU5iFn=@kE^F7c9Er6 zAV2v;5>t9XILhG{ziAbgpxEOB{H8 zE8WXrf7gBjAwzGc6caw$Dbj%meYMhtJ>?FkYc1&bq?8{-)FhJeXVK+BCn}euJwmWf zjOT%+P~Ihnc)JD7ee3+@VTX%I3+5eDZ`GxLi3#bu%3u7WH#QT|mD34XZfPM!$3GBH zBQI1@)xX%?KgC=ERscL+V%>OvNkN5Gvo#{z{xIZc61{p=^VJ{1Z5|F9x`o1yPB3Pu z8A`A@mG|4HdhuCoq|m>;zrMD!=-spNEW0CO@1HcL`^d~M^b(#7H_H1NN_Ti&DAF}* zF~o!p@``+ggKV-?E2W=<7*g!qei*%8r+5D&#iRfUAuk~}Pi1OYY*HEtsR7~UJ%4MR z&OSzaz0m55cfjBns)oxhB)gS{pJFL{mixvgarlq!D6bu$$wLg+lqvu)2mT9^7j_`t-E`7IYK!?UC)Okx-DIz6<>-~? zo9-nxQaOG=wLSPTSAy=S-_&o-Jj6V}YOc5^rMq^mBT+Ei`YXQ8;VJ^y>rDVn-8XP2 z11>IiH6;Pbti@gqTg>fn>9P&8rc~@hN6bFKvQSPCH8h3|99o$~1`aC@9xtwA)*%>r zXT*{EMSi2}nWN$6H(uYYxmS77bd^T_J_aZq&%XgAsa8t*-efJMV2|Xajvj(X+C?K0 zY);pA5z#xe<)TZF<4zn;bX5}1&}kuYeVe;jh@99^z$wcJDmEvCsOjwCqX{$uHm(j^ zv%gh~ex&ndmH!zF(7On(s&f90Mbdl76He%UU{Lu5;@`*7-rqp--KeZ0%9W_DCQtk^g;XGdN2|ubqzfVgoCFJwx z1=X1!2z5C0BzshoWD)Q`d7Y-mIa$*{dZS5qmFkFIH~%^*-H7c)al-zPn)E(33HjVn zoHm$AT;=Tp@bh26mBiNp?<{$D-NTa!%9aoB8g8pk_DtV!2WV>nOSMG1MD(WQ7i6Xv z6!`d^&WH@0(@A6K#MvBOne?%o)Y=pm0&g zS*>)0^+%jN%}^kP7OdfIOB9b3{>n@gM@1e<6m9pOuq!5*FnV;MWc{9+CR=K0fB_Gf zZ?K_N>Q#`kW}R5pHQxEK$9LzT^hd2uVoR=EWT~#U45U$Gi8VD8l-ZJ;uJ#skI941z zsirpB!5Lhz>aG6pBb7gd=xF9x=ixD#OVFb-xwpH4M3~3^9bpr2qbIzc3mK+g%91b` zjRirW;3phpJBx|G^$Ww>s?~9m0|_f6t9oLe8ng;kkiia7%w9j#P9%&K$mf!}L3Giz z@V&jFR{VhRg}v7KZBwXJSTxpw~?x2w&y4JmQx2^id96;Z7Y(1cOI z0-Hvc-r-BYjoxAwa?Ub;7Uw>!)K~M4$~^H6|KFetU>sUPomRclb4%YmN+0$eO`H2g zc}mk|1?Z|Ipj)QV1B>Kz+4)d3a&E>+I^7wGju{qi z4~0oOZg6eR#+WLSfR53G!L;_d(T~20+7yx*Gym~n<=WZ`jK7cH8}Pi&c??8WIbOM6o(c6%0KwYn7*ke+G^Rm#u&% zOSOml)x)FJ_Hf#V{%3x$H9D`;-?uhQ&xgonc}7DBqhjl;QzQe7_rldGdMR7KIiSo)$)q#C-d#Ij>|75%sl#j=?R`F)5w9)3 zjM##*puXvWo#%G`aJ~A_sMOt)o_q-+?q6F#!()c?Mp|0BX8*!((Y5aB$$3U)dpH2ciXF_a- zuFOGy>ErS{0$9&;@N1=~Ac(p0d7Ud!G}{B7tsYlicywgr zxjtttp=+dQLkIGi9pdY7>6LzE$s95E^(PVTD{+>=mnWWCpj(fTURA3^;O18G*!VFN zKe#df%V}FP&tPslS(d9<=j!MgA>dm^66ErwWGcxIJt`YkJJcB9Zz%; zXxW$%Osf6&=EiexM=#N&*r8Y%Kr6o`!0UTp?ZKrNIQE$u2lN#2)BACV+o-3}&&b~$ z`pRyOvvKFYzf8*ZfsP^NPzu}V}=2bU(hi80AUd;9iujXHMi z+{uB2I5Ra(4H(ez{4Vc*YnLcyz#;$k=fy$p&rvjrq)?XnHt;)iibR_HoJbRwDJHsa z(QLM()|lITl~w$C@pSv`6P+Cfv*lt~Km>L-le>#Vq5NLyuR)2a{Nlr6#d2@=RaeEr zofaGS$)@p~9yZDpy-}Cd@63qMz{H>>>ruTNUD+G$g;7*qg=YM@rvL@}{yTQb5^Cyq zz{vzUT##2(vsE+iFi-n_OBd^nq(a=iBxp|*YkN{^(c_>GL%O0C@6jJ%B$otz0pyzbFc}xg@vRUO&p$1uM`9o(?bNy0Aw| zjKKHXW~>)htzt>gdTVMf+d+_1#DBK26kp1^bSB^M;0oXqwq7(N7M)Y*p72=s~P( z9}%cZD5tGeviQ!eKHmP?r~UFGRzh}uyAF1sROoxrnBHZ#W^rjW2l$DPN{ya3ek+y` zNyozkG+puDo3ougjDBX+Y=vI}r|xUeiL2i0^QO+w9ZW*HbJ`;RF4@f2TiNuTrEIYp-Xuz3s{?*hK%08F~qUy36yC8)G2cRGC*3?<1Bbzxqek_(b z2uno%hRj+fL#o_eU!s zb&{9_>sMM0Tx+70s76gKoypKWiY2X>H?3VZd!nqr=9dVl00t47e8RU(``pqJ0`xYIc+ql)Uzuc_|dq7mXC*061LtMd3*|hsF_(0y(<^%nKZ~-CyQN7Y!n%(g` zl$Ca^B6>462BW?}U4A;x7dOSc-y0iQ0_vSljgb`15L)f@CqB`5RgOVShO>7!_}=r- zJ;EiL?pJS|U$`8}TYU(^U9b4LNsJ`89Ns`UmAPmOBifNg z6A52}`^hp1TbiHoz-5^6Munr;I`Fn~-d9{KlPQd)f1I(~>D-(m!N2{vKqBoeIJ&e2 z(A60({Ar-w8_n5sciP0dK-`LG-qMdpXsJEE=)C_gBjC%9yR0m5hGNZ^@RN76{3#KC zlz8ZfjCQ)Fs9!^-f*fbJ?SHwAWAnO?l#Pw?pTS_tEHmR4X>)cw+i@(*kNqNk^RQ5y z5H&Y5l!i9fg{z;IRvb>`SI+H$o`}P zd={3LmgtPe@J;snzBOdpo4uDZ*?#IS3Bl-ESwGa^y6Hs_e6EX>gc?(&8;qzb)0M`u zDZrtDgY`>VGPU5xzG7*98S^%a*;T{?!Ek)KxQ^9vDd+n{UYN660^zgn<JL>?hm#Ic@#l$^^JOK{1~97!2)?utq1Via#v?ck~Anz^O6W^xbT_L=|ExPpWU3 z2QAa`m^_i=(Dj?GL+}sx@^M*4vl;bc_sd2HD!CF(=nq|ct*%>FmCt9_H=(Rn7T3*i zvr=a+w&TEgrM6x@L^>aUS0t=GKA91XeDVC83!I-x5(69d{JI**r3~0mFUzAk>4^M~ z7DIRTq>4fl04UFDzeP??lZ-$%o8Io?XBuLJe>Vwn=W-<+Ub8>3TTayQdPVk-Q2Z0q z*G;R9{1*p%-}|A-{)mV?R+Q>GW{XZZ7Xu zD1vd;N!nN1h2_b+F1-3GiVZMNZ3)yf@)x4 z8@{;U9M4g8`?)%!AK$+E7uEuWmSFUsf zr==z9&R)L2?A+d%-d&)sb-C8Z!#S%T`S~O_M+=vzYm;kN-Rs`ivL3HHbM3khBRdUC z`EVX=ZYn{wMJF?rYyF=we$DH?G;kZQ7**YK@CGXb*!Mbpos$?}hrAN?*Qw_~EIHFr zzvpMNS;md6!FaN^0>3kbGMcr2M%HH>Gg0C)JOv-Ui^X7-z}7ISXa+MFL*uzBRlvF;jJ$PLGXUO1R_ z7At)cS1X8I5(<4|+rz@;x~|KDNM|Lk;MMMEZ4k`lz$wR5-1g7T?ioaqD)@tuix^oB zr!x@0n9O`Bo4>W889C?p*%lgTDF^FzUyVoJ>~^}3lw)V@6$}5_FnW*K#0Q&bcx&>~ zsHjnDa6~n(Jvsb2^ndH6sfOx2&?Vf5NlMc1EX|P4{c{x-DTSn9ha&Wgum6b=UIe zpa?{C?igyNDQ8Zz&(+h2i(smD7JKK{J*lH7Q#N=C?52lCGKxGLt6!Ci8V8z3 z&bqHhgi0rh?FCz$p2gg88Y?ul z(Q@la(u=Ci-l)`jh^;HAbBaUbkbR16O)#k5m08F&FnY$XR+HOYDiu(@)A*z`?o2h; zl4$c3Ne+h^B3e>Qt%AHTmDfF%IgGxgg@zRp-(_8Hf$nHrP7Vf(#VTizaNO@+{POH{ zR_}EE@QGd;tGH@l>yWW8GI)mW{E?6d98!!_Jb(z`3+oCvD5Z5 zBhd3+tE_nAHMBaj-w)S$y*5(!C3lk4ikApkIgKZ`&w6-0rwuu3i++0^M*rAd@3=Q6 zK`h64oErkcTpQaw!d{hZHgsqB5Rh9Cr8?Mql6{cQCf%JFsRA{*S=N^t&5-G-=1RK@ zh2bjg&z+{NBUlO5%}3xE=sYJ)r_0q*l)`snmop#0At} zSDI~J4dGKyo>1^+5xYre5q;?QXz{@018WDbQ}n+!k{8{7UD@$$Bbv>bKA6n3Qq+%# z_7pl&kAnMg`%WmeG10QiF)E3vR5a*GYgi6FJ%U(|>gb+fJLCFM9XaPpwhGK2r;KQL zJsyvMuM2xaWOm8xD29+5Gd6u3e2Ql9g zoHIzK98M4n>Orb_j1)R_fj4nI(~~K$=Vrmp4=T`E6us)U0i{ zOKOul6oLOOU&c6l-(sIOY|qQa9){E96HyD#-J7!gpLLH35OrqdYJTm8o_@0yJa1+b zm=^R}>;S>0XJbTFLI{^z?|5(+O~v|vHD_B)4CT^rpn!W>R32>bjlg(GP_-?!TH(mT zv{q#rZ^A^afT|*PZk(OTC!rj=fk3V$gtK*SLl(=@CXQJRb|}~KcSVU?yKdS^`l63+v*?FJKKD>uto7Vck$4jqQg)>cCO}zKX zflNy%P9<0-q>xT3_o#6io8_FSAE&+GLYT}4cvUoNMmijpPqTD-0b(E3adXyVd~Feh zSq%7%-F0KR$Q>wIL zy=mBjglC7C@Dr8?gdpl!t#&tv(}jFRVyY)Cfqg^!YVjoSn{YDt^C{|0qaox9JGaOD zC#h$fz`LYbqFhAR#SDAZ#9RiKN+&$%c~a1%&g>DKIfHFeX<^A9PV?sD3+ic%MSn!w zeAwz2D`2ux`{-=D_x1W<$L3=DEu>~6tkr4u8OL|9n;Qp}iA+4qok656R_E7LALj3u zIxo8+9S1F6ReA!rsxf<$RnKj$r;q|8R2YuRNY@fGT3ywdNF#5a^yq?^26F}%4CT0q zZik`j0gb)T{QqO?Euf;@!u??h2|-{038fqw2}z~98IbOfMnbwJ6oH{ThHjM}q$EW; zR6tTBrMp4G{~q<+d%v~5wb12RhnfBE{qB06=NG|gOyicOhSK%u8+Xr7t~Xl(<)^+w z&4(DZpBi)^TUKLZkmjBJRuuZ6pV=Ev{oLGLryqvU4{Ol%=b;mkQ&V&7Lz!nYEa+!oiRBYaV z;f&g!y3_dZOK6n3)nLL+l0+{4!jOGqrlr1WDumt3jh-tL3a?(nEDILOQ}rE>F%MV& zPjk(_M zVypXXu*VN9!vrw<(*H6r-0TACbY zmKq{zLl%i4OqBe6nUn~o@xmyL5Aywuj@(%T4CWjb{Yf}D(Y|d_j8d?Z9g2Vkf*oFb z&%T6DyPo0wmI|RuCv8%drj7k+25qv1_lED~HgoAj)Sg0+F%wJleJ^ z+nI`==`Nbg(_MMu(DMcRx4H%V#`ozw!=(LX(R0_y(~T=8N+IsP6-DeZuc?j0lHsR6 zcs$^lB@GQe*o;EEBDlJyZ^9`^)xCcuez|YVQ}n9PJ#%KN8r#?Luycz5=w$^N)dL|zcZZ>#$tncDAs>yC+--)+{^s58IL9CEBc-O7Qs+ZDJ?hopqhLzW~J z9@ETv0 z-?_AP$}JW;xNiXi!@e2h)5Bls@yaV+2k1)4?4;+65)HqVMcmW1!|L2a-%UeBkv z9&cyqfKd7Cq_!Swg16iFof#xZvcB-L*I98w7K8F}6a%j(Knhup0PQNWHc(g+D|^5D z5?7l0cO^Z}hl^Vk>!bN^4aFE|KnaBf1TUFNi3bwO;|6%`nw=jZTCm`ZO6^G0zQTmb#a)s zQbX)M#6F?um+)Q!o16QWWO;tP{bp~nf@ZIGR~f6jKP2m6_Ipo~u1{KVW1LMfUD>RtoC(VVjJWP2Mga0LBm7fvl^byLOcpC!K_Sztov z{N5&Bw3UD=W^K#7Q*?yISCW-KER@+qW;SFTx=}h_bM$` z!Sh|!U8ABS&O5{G&rLAJeKGA=pgKaa^ahVgZ^s7EFX)u{hA0U0a_2j?HP$>^1aO(w zS^Xoj6zKR-11YFX8r3#jP;rWtApXMwkXP%_r{23he`AxRXt`SyUL5*h^#M2i1t>B>?<)@! zRXQ`Nh&ZuBBV(7zR3c~EYz8Ah#1cjMfVINM{ZKK)S=dWlqw|M|7i~4;0WW!Pkdc*9 zT)nGKgZAfyvkqQXIu}*quY#z9b{bmffpN=Q=29_39?tS5U3$LJlQG3lyqkCZ;Ju$> z60#?4yz)hlxa!aoM5Jvwi`GnQD=#1a@8qm?*&tFQMrCv=)YWl zLpZ<167fDX3tC$&(miX_zxh)k(w~yYe0PkF@$PLHi9NE1o$0~PEn?X+pStZRMB|KB z&3#C*D`q=L^L{I*)GY33`9dGFPLw#3zgGZXS8Kavr|*eW(Wd6M9XfDQFeC z^>#r=u$1_D_r_HF0)BUPj3uyswjJhzgS_{y8urakh;VQ<~WW#0Jk z4bh$>!UetrR+#O`{Z?4eVS3Ky?LSF@5omC4*vQhJ`f$e>B)*%yZrbqRqOGqn*%S^h zs?L|P)jq7Ve$_D7E9@={AfD@~1LIu=M|W_Vt}u1gX1e&>ni^a$>-sxH2?Hs8^xxqV z^cw3Rozmkf4Llit+JYSV3S+KmHPgk&yDy*8u3-;-r*$k9EMmv`jpvAMhxg%T_xSd4 z$QfgC-lz4i3{=2O@5H04jaRf%YPTe=28O?8ae9l+LmZ$pGVSm<6w{X>Gf1p!x=o)SqF97y^J?`=Er}{Lo8Ftc4K8$5FHaTs z<8(6|13B~*oJqO;+(Rn4rzgj0>wdk1HF^_!+HN1rO;=6E?~oS2;{kGYM4W=u9@p^I z-dCIWd{}43({Y#*1OI-vYhQ@V%8xpjM2>m+FMsdz*ZHbVlFzrflp~hipEXcf-Lecy z-E}mxlRMl(O_7MAeDs`sW~tMyQm>fZHl^+1uat63 zL6tOXVax#026EG#DQjUgL$g9WM6LY9q80mB-c8r_g&}97lXI?3Yj2511B~VN<&@Fu z03?(i#0sK+I#-;G`+Hc=iHONU$tz92s|<4AM2P6~G!!aD1N4}{(8rWlb6y-2JIdBm zJTDnyuQb42XqD6tdyT>C>n&>U<3$gdw}oCfoZC&oalF5^jTIU#7knF^l&L%YeA{k; zR_1(8sUdf-s*r?z3;T(WnqBO5|#P%-?eu6~wh(NeacR$Zj}% zo|q6mm|^Ynz(%&ZyF#hKsy99qz#FY`^|JKvUK~*cIvvQTcAv*hu@)(kdyehUJ)UIL zmA^@WYN2cJBdUdVYn-h{;-Kk)m1&jc6k=N;Z27ICR&J;VE?SlzFzAw80#W=@1<>2IntNzOKVP9PU~YRDo}kY-*NG zO$)!?H^2}6m)e~C){2K%dEmeuFbp9M=L&|UelD1syGL~NkgrvGuk|qz%R<5(-n+FS zexF5L8X{9s07i)s)LDYz6;b=ReX)qa3=7?m%Ty+D3@?t}QK-ye40lJ+c<3Qs7(;L; zGabxp<&64c-HpJ^RyR#*ucyO~-TTywD|m1 z9^So(&R`lYV2q;h3`~6&J%IWDuc>3*OE}0?aD$ZIrAAXcrS*Iq*b=(|uW;iI(rN&U zoSZyU)Nee^(EG0@g2bQqhjzEifXZxNgZLqL@Oep0-o;8S%hne9?&lUQW?9scfa;R+ z-JQ&2F#0E`H~w^pb$sy#=x`7mm(Q?;D1*zio%XgtzS@)$(_cxSPGHApU}UR5QTy@Z z$G!c1IRBfCu~K@koj1{wi%ModRb#T&o;-!auvp14x>nF_#jGcWIt?)5`Y#dF0*=!m zVT81;Zj&ND2f2VoD+lAab^>C2pIz?qKjuQBnBFdWp!ol{-%{way04yCtUELme+e2D z#e$Z$ic;=z0X%jxUGs6bD?nKvE;p>#!!Y>Z&I%+Y;&OvP6ET36w(#qCv#P%S zk#E`WtKGmfK*9sMFtO-2Z&AF+sU}b1G&VRt;=GuDMflKhny(=A+hViJ64sXYO0oK& z!#?y!1pnOOeTpL=Q*Ri2I(>LToOCF3_w}ltmlnJE^efJb%K%b4&8eqGIV0-X$e z7_1{^iw8^X<3bYQsp~mKckzNRja9@sIpsLy?L@@hOS<0{y$D!G8d;3B1QbLQo(8 zfO~MiID^qCUAji<^{qT0fCpfUEA#U~e0EX75gHet5wvgD8Ll}UViYI$y<%0dKm{5bC|!7=T_PW`OaJ>|4$tq-}InzjM-6? zymIN9=80*q2VUcmYZ*1VE=z$wX|<7~?+j+UegU%us~gzN0|l%!KMrqZXDpOaS&y^3 zwXAFBLmq?jJxKm1+a9_=fj!V9*j@M6iO_*O;5`(%{#&W8S~5qmQu0QN83QjP)C%y@ z)ho6~itvE0O3BHaE{1WG(xh}4fo!Avhj_qMy@OO!QSpc56iUBsE{^6k@5BKzmI4Q} zG1S8EHh~}xiPhj-;BV^1uxhdly+jH?^*l=nw+AJ1pj$<(KTT;|*7w3R;GB_+(+G#P zB&o#<+TIGZ3RQB%L?aAy{14y}iUV}dUh0Otv3$f&;=*P=($^;?{^%aw_t47G61|$P zn*bu$rEN0^76*e_Jh&dPyXq5(<bv_Ks5HHzJw zCFG$Y-De`UFNv9fQwg-dWV>1Y#u+S5rfhPa0y6i8*uHYeEP_$pbyhcbhnvH=9>|KrRLr(t z^RmPZQ{LpYmSPiLdW6WByiEY=c4iVm=FzdAz|K$&Bq?WF{B&{Ax%>3s;gRL93fvRe zfw&my$NYG(Juv`{h1`$a%0?$ZY1XfY1Tmy7mCe0M- zE(!Qq;XPmhNF%+w^;FD<=H^V{%CQGZ`S6hrrHWlU^ji_N31pPISIm z*``$!4R+;j@0_G1JN**CKJF3n1Pd!$5JCkdwh|u)hZ1xbh&J&9rt+OqJ)o=^HF6{! z5?xyQV7$Wko?s{wvi0}1UpNk5w>hzW0@@|uF(>Chr}1Gjh^llEA7p=nolC!%_*5d< z3#TbRCO~Re0*Bl69wximW#=F^uPC} zFh90A(fe>6TO?qgN-ZoZ)Z&&fNzCUwa6ec?F~eGamYs_AIrYu*vo7$?&{|Ver<@CU z@6iDPDVz6T;@$%SklL$FaBsVrhH5suX8&^}TbEIl85#n}Xq4(j24Du^+_Rg#ug^JD zhz7UJeXpTnp~J>hUEIYoq$xvm7m=b*#bX)Hw(t$)Wcp-!fs%!GvZxZgFwK$^C`0^K z)h(RS2&wF3SkB1K&Q`D31%gY@9!phQ4@MZQ@RQo7G;%)olLaW|2lyJQS{ZF2(F?4dd}_ z@jccsSGj9%TMVaECbpjzbO%&w$xorT3)t((+Eyx`W+tSQF7SKrnbiiWZ2^(kcbFO# zi4zt)f;q60I)K4iy->=}2T*EYM*e52;NpVITNEhe=NXMtJ)SPF#Qm#*hYP^+DMY@% zT6Oz(3UR}>N_j+j^$}(YItm8o@?2A+(AL1;t^Kw@3qvVcrC2S;q=n&2A`UkzBuP{U zrMm|N+0goA6vGr9w*s%v<#DCBr|QRQY}B-!Y!%J7fnFzzNpph`R03)AR+zdWVP3b3ZDw0c=Lqf-y zOimIMC!`?e(2h=>GQD6Rja+Kah?mM~EaWiLpbjTxRd)EA8~p4!*K+vCp0vT%E|7ZT zXN+gMKjNc-^oEAKCp%7I7-x{PYvC%2fhrZ@tM}iv3QPyF*83kHWG{cS`)&qI)iW(; zyZ$KCulY8Nj>Luq^tTGI9w&*~j;yQS%~z0D{^S(L{_5MQ-vfbN6ym?)ADuu79q|V) zmr{2IAkP1HqFl{A_;H8v&;!WR-HBpiu&hLQhSyx02tPEmzmYG?34%KR=|($)w>jgl z)sdP|*FxodcfO>p_#~Ye8c`u)6R_!i;~!}?=~M@s(KkWIkvbECFQ1cG6Q{|UZmZ?* z>X&L1MQk8hTx^TCnG;jaN2KN`BJI8)JahQ&Lh{%;lvQ{fU5$dr`%ME%&P%#j+7fpV zp!2ue#tSXyT3@^yD8?}ulELY}f;x3EFs-BaiQ0FUWwusuSLz++5PEw}kVBM@>ptJ5 zQ!`XPjtPhl(#NqiFISuDKP!;Ls~P+#38-U>s$g;N43_N^*u4teofRFMl(LV2q&{Yp zJ~~?0OwQu%{weYv$i&due9m-sc7C{$!qBz?M3wu)))=GqT~ubhpj#oS+}LqFHUzU4 zKA3|K#+|mX>c(oD-yE;0N773aANU?+iX}=kL7)Od~k0HP1N02gJB2-{Ay~Z{$_keU09u^PM^{9+JNV6g;Qe!^@Wbj&e(0SK% zfimC?wYyn|E*={denxx$7^|@VZsm8M|16`@P@i}UcNIZFsKe92M-YSe7Viw(GO)*O z5|N`*M%>^hyTO^f=t^G6h*o;v`FfW6XtqwZtEOo*5IfHR7K9&y=?+XWU?q6+^(4{l zktLPRzREKp%idd-+wZREjiZO4S|gK7ppm+u6JxPE>uK_jOJNSP!Ns zIB3HcZizn@H8j0kOnsHR%S zb7>ij*8JOUrR;{EHQ3KrF%D?K6cxJ-?t^47v#!R(H6R=TVEnPvw4U|0rt4I=6w-7e zB2-_pMR`{=OcE6^HHuZ>KrfPU#33^jGoScz>#u}<SEgI#lHIp28gi91e4|@XXN;0m-Kw`t>Gi#Q;z` zb9)(LxstoaKBY~rZhiqsPF2}#ux_P$61z4Ce82qO@veu4z6;@4DPHiGJEFjVPDm?e z$r~?YPCaM0wY?n=!qv0c&ld{qg_u7b1RxGJb;jyTN*TYgKJ`P5$#yFFSZ(oWqs)go z$isI)mhDE%Q8@#@EJ?+|_sg+fQ$3pB-9^Q+&Gp+?K!bnG$6rQU9}kY_V?RhxDD+8__h>QfY%!9n3P^*270|hc z4O~ZTwVEHoaTE^Y+j^*VYsl@lBIJHQ2vc!_>|!H4Q2IrmJ*)tK%mcIad;L97Kg-u$ zk4T$(lRVbd6I7NX;b6WE)L!*kd~4CoCgD{;r}pe@DHezoDIHH^)B5LL2W(AN_u4ZG zYZoacD}1zktmB>!WMMi$6w7VVjjz4&2uSnyDqD(Y;bfpLKvpR-B0xw~rG+!SI)x)z zJnp(6R;(ik4dYu25JT#W6~BJdoqT16fa`q+3S6AVA42X+hnj7Um&a3` zPi33odx?JdFmqF&@Rl^!XC&%(qSdCH$TVa~m=fMP31;1|xv+7f1=-5Y$&*9wkj$po zsK$|Z$X?>113hWmsQXx8efhJ4?a5sdFfmb>R_u{UVY;oz=N=2ZSqx~>=+*FAFew%T ze_zmI5zit~&0(Gn2#;`OTEKzToW&Jx}~o-i#itao}GcztR3 zQVw$l2yHnpcH*LF0OD6iBtULH1kBD-7skY~7C*pem$B_rgQ!4vgg~NTJu$oyNPB)9 z9o0;RMtCP_^n!GU#rjB*5~h;Cz!SP!yHPAKq`HBH@2i1xMFY@21u2N+FB(`rD}$7% zc-(5EQydbJ6L>8MQWUR3Z{K^TG7S`XN%8v9;DOLR1|~sr*g)CqkdQa*KY;y1k^eg& zBUiYK)O~U$BrNN)hO3S;3UPUE|C0rvn_2h8H6Js^i?xe4SHUx5dawXW}urL8nc)sP*MxzR_%4>93s zGvX4k>L+C^WH4OW-i~J1N4}Yhq@#N5oJ*`Ne!2H*I*>_fcYmn|Ld$7CE(2ahJhK|j zvgyZ{H}CsR6{}`NfNpAUzb0ubEY$E%xnPDN3OjSppi?z7jc%pY0D@oCnVn>*MD_&p zU6ML@4o!ZKbOA>Mu?q;bBagU>nPbxVHv?%63_~tfvo!O!muqx4ZaA_=4w|qR)V{VG z-G5kPJv#7ZUQxmnQ|x;kL5(UEif;F{-ofgHpxSfC?4U*fV4{L31K~wUptx4xJPYhc zL_|ciPGBSg0CO-yN6GQ2`z}f>swmwxCr@u6`2jg_QlyI(12!0WNLP?z=mx^mF<-%>!Y(CN7)6O{{X%lbot=g4e}6hAdU8B zzwLbG-kr*D!6BJAY7uWD@c(t(6iyt#RDSnubYMUkE&-`U#6@jCE!3+yuYb#lhDr0` z^|m;z^j`IMg{4f5WLc$*K!gV>T#oUuBn1x0m~}UeWR|q?o(OxHZ0#JuVV#3?4)%h7vVx7I-52pN>hhz$+3vifOQ`v!9T|ZKBy*O=) zF|jOfOW6<@a`g8q`d9<4Na*+Vfi#V5)|V>X_8>avvH5&CE)5ln1_`j}`{vr+4~qxD zQFh!s=fIJ$y1=C!x;@_!eyW-5^m=%$^q@-Zd@l8FU3aI!Vv$}=O0p#tgBd+$!j%v) z^(|n?szdF_U><76fjP@OUO1YU2mhLY{Iq872rdS1bjlIL0?0XKqz+JGix^Q??~a#a zpceMjx@a!!d{W~DuLXLDr3X?|zZn_h3?^h7bywoAtj&2sakwCop*lcUk!AbD%Bj3l z<767{%mxxhAnT_^rt(2lNk`=b311`r$SkEgfEDpD$_c5fc7ikpZZv8+V$lu{q1S!a z0)1E!3M7eF&l#2F9G`QZMi6pSb|Gq;zdJmNDR^+1Y>U_S8{db`QZn&*KfSIU`S+XV zH{&(S^glv*Fo~-e(aCpyNZz-(j_pYqpD{4!ACug9^&b{Mo3hX{pJ9`U351{ncQifU z0tL=@7zJAsJntvLq^4hAT-)5lv-5@CR^>~)vO{vI@;c6?Z_y^U*~4UIW)!FL)9PZ& zKmxD<$V2ys!krUC=`?0p7?Z%3q(dok&N>9^lnLpt9U+oMx@)+yirM{Ol~w4^bR`Wk zdN3seN#m*9(oZ~4?3=#BWpY_AFVEu%4ag91RI0Y-c+TFvPZqpcvcvk(v+n|H^&}7%sFKGxp*V&hn1~E|+li2&ZmE6YPMpw{pc<7x9ht2kp;)Hay)~*P zuAQ%>#8z}U^0n}LK@zJHb`Q`Qd?#u-LVW-P2G0%#xU`F5LIO%|gniy{#U+TH29)wW zs3)+gzfFcJVL6`dEht&`?=J6ZD7~EmIRX7+BDaZASPp+)bgcoFyU;_Du?$u1`EUdz$)%7rN0Oc9=!B&B2{XII3veOhGP$~2C@nk;yEc?qqtNZ?P5 z%5V=!62!iJxA3GEUPY3q(Q}vo*_#!{I}dcUECzfWHLO`3f3JSdDn;6$rWnB-mHU(f zrss74dK2@-+x-UtT14gDI^5rls3t|g6?pK||A>A|kb;AhAEGv5E%u?Yu~CvoWn_2{ zTy@wAEYD6S_n!T@&nR6Cr~PDK5LpXad&5M>o$jukgz=UiU>)RT@Zq_MpA!>;6Wazh zc}!nn-G%}H)zc(#WT1)?xvVpsm!TqsCTt(dGNr5B3|~TZzib@xt;xkcjq$eWahsv;^~PW zV6P?pub1zDePQy*AN}eh*xt5(W z?r_C!4&VgvM(b??+pDA()+qNHYPO=Gw)cCfWqC8qj2R=<8Yj7ZPba$(TLXzvM&QLk zRX;mNIzbNr$)jjsvkczen5A3oIVl!0=NGEtGn&^k651OlTFd|1wze8*Fm8|VJS0Ag z4f5CISmmHZygy7CI_rL4!!&S864xSzT$L9K@5ffViz~yNYg5f+6$P{*BSgqKd>s;o z5}l$9bbBUsOc4=_chSauP2<|$H? z=7-Cf)8?$Oow5mKU7IZT^t5Qt-&xmad96>hp+X&&xS-oadUXzz`8f-PuQ|d-`s){E zBS@>!h>LO65!^VutVIb?!D*SB3>S6`nsgUlwhU%4^C2AoKmmVE*DaBLTxmNEeM#px zX~}gDgaM$FJJVlzi2(!}R;I|Bxb-yNm0^96X-;CG`0Bmgs5#J0=T5nuK8X9^uENQ@ z|Jg#A9?}vnv{VbSZjW(icsG@{m@GIoM@!0ie z_{Lyy?Rd)2Z`bie9I+{KDE46gqY*^k#}6ahFr|1P-T4|6prj4p%6Kkz2(z+2Y(qO1 z=YyY${9%{FC;bYa&{>BP=DLm+l!PYWEXfq_57_KZIjR*#(buhQCfR1b+SsMhIrcC6 zmwl*ZneZ$TMU%hSty^B`=1}Y`(&!Zw6Bz&l2i_qL1oX^ zcXulh4;85RUXaA`NKK8())=9?a%TDa$kL-3($Sg2WHR*Pe>LvyQ!SlFPNUN*!{g0| zG<04D#062Ju5NwrUAyDopS61L=Wmo1U-<#2uz2GQaHTDg=>sNY+N%PB61u$S&h&2K z?L?zW=-7lbWg+9JdW}zcIKjHuY3uXKqARabo$@5xZz`RUnfDlrG7LPG{iA0U)pj5d z)@z5!D#>#;7!J7Hr9VfGs3@_?x+|3(2*KtsE!)Py-RYP*B-xLvhZL0l41ALC zV==Gkov(fxUk;ns{F0qz)8Fqq2!94aETir)nYFph3}yo8yCn9&txfl(4Y2fhr=me( z5A6szTfiO@YLW;>SMpY5QbZ)8eAcY`e|n9m8p(u)li3;M!})O)PTa46;|5y>Lx4iq zW4m3B?fL?*q|qC_S0kK8G7}(#9lL~*6>Zo1PyVQ}iS3_MOnJg%aDZ6AW{2o#%r=6W z;TWe8LGPVl#zlF8?PQf?_u532{Ig-;*}@_=kgf@K5Opa<%+gDgVEFJ9 zl%&{9`h+4(hk5OJ>Tq-fW0gL)5Mx1`I|=)6BI1%NJX~9olQfm&U@P$rKj)v?=|H74 z$Ais>9G=I@+|v`H?w_*Z8(^TL^tNlTd?&}8Ldnr4cH9; z74kPOqlJnE$ROx@nKQWFT|rmNpYA|>L+O6kbBG7x3p8J5vM;#P+?8{bImbVLCA^W@>mK`%L6eC`R~LjiKVsR3HJ{h|}Wq#$#t5GD;PgMZ}_(bM^!v$DQ^ zPIjAhVf3Whu0uW~6o*JUQPcv4;8Vw5kQ1j>1p7XuXh!`qUX%f$Xf1_=C8Q@>vm%*c z2Cr8KQq|z%-1{(twOCql8jxj(B$a|*GmzNYg0n|mEV8Zs`J4_^ZRPszZYOKAojcffA8)sd%E)k6%Q}%|yb@ zoX;tcIHI&YZ`_AeR9pmwGA$AUR%TF!9r-FF7IXz_U2GO-oQa2d45MV4uZZk^-M8VP z>~>VKhAHub!VoRvrp?+b%j3dKt;-beq9`o{QsxoF9mz>*&lG6LupTs0D35GEkiY)S z84quwf_^Q;H@v=Jf<_m`!Uu9{^aapRJ*5S8dILgVX>{xRdz{rwv}BAJOp6L6Hh|yY zQU?4;HZWpv;@41iZVD>{pp1qrd~!ELL9rmuE}g$mL$QvHDN)oJ<&cQZSp2+c`Bid? zOJYnMFd5UN<|vZ309lLtBzC9i_qd=g!Q)|ok+kO4PgR|jNCtp)VU`0^9vV9=%Y~uE zR-5nHv%{xBCPK5zeiE*_LblH?S8bhAkA)4;DX4^W@Qs@p%OYf;;8jC*6oNS@M<-Ct zG`FUVo4s{=bGAhogG!jcTN#8WNqz?1PY60wu%PBpf+DmCK9hJX4ul<5?FG2nm-9pq z3mbA8H9VoN8WOd)_Oo|3`;#aP*28&HrQcm3S#3?ZDZ!=CUWN%~P&zy0_QJx#-tn<^ zv{d1DGjK82YRuL-pvcf8k%a0$o?2yuJt|C6BN$KFN>38#pM7Lwv#PK_Uw*=9&$uWf zbUz}OI2anBU}x@7B=5?Zj`I-I%SL1%GDt5~#A^j!qJ6`aVHM20ty+?cwSrhJ{ldIH zA6q0Lte>DOu&=X^@)B*-z}Qa5OSpv_QZ!S{tU-p9k#R{Dtitg zQ2pboLxcgAQehxF3Q2f-4GlLf3)~X$nG+lm!^t2<$ol@O_%IwYJA5d%n*0}Y#bSlK zZsBnw)BOY44_J>AYq~q}YqSz-6Kc8(Z?}b$r7KsAg*cl%&5;QNMXnefiLD{ zV%yjvbzua^6k-@eV;Clr@BWl;29KFB5fl%ji4nx5d~|SF8KnS4e6_4CTp_u|dO98( zI>I2#I;AxAiJ3`CBjoM)4cX32%X3Q_>6H<8bCCXtD5ZjOLZ2wHSh3qFv=Zowk`g2i+W~I!Q=SmNw{~#gkoQN*gt&?oy?XmMk`>1VUq{Fxh0D~08kxmo zr8G9Ap~S~X!m^BTtrGYvK^}ye@Up!eFE4Gz`4z&qeVnY^kvc{R^12>JbseUD1 zRbmAh^aPj0mHWfWw@8L>8p9a%C0YIW*iXNqpMewmK1?44lSTc+C1I*M;de${`z^#x z6Z{sQK_jr+N*JNeNC)~M)+vbK1c^oBI37h-pD48{i$&jOf;GV9tMuxb#x=0{@~k~o zJvsj$_YGp4t;;J+Pqh>2YPpItTWbzw=e~^>;HvS9(K_f~gMXVfyNf>HyZdpy{No$p zH>4W`Y>o&?L8UU(HQM>#yZIBef`3!U&iB1qO`EdD+c65j5uoC}rT>x>h-MIp&4PlO z*;~wiOqxBwQ#dnCMx<;oUH#|D`vZc4V%JPN$s&LD?e!gCIhT^UxDyT?freDRB+&z~ zp5Be%ay0T`%Q19-aKdF4`9)vb(sI*VmK=nesGoKr94bQ}T>G$H=@WCxVGBFyLRZ(S zn09vdTR_6!km!RncnBeMYM=)X*gyO7uTs`D>k`(nRuulH!;^d~4^O@bhxHrd6?A!B z{w@=w!HwW|djiU1px`2DrVAva4ELG)Z3f`<#us`aYVLoW#z5<3uiF#9+N2#Wc%n)- zgiI3>Z&RGci4k3$U=QL}mXrs-GblN~6kS^Na}bx^cAUUCGL^rFlq&Jhvx6#SO8fed zq~7=`?c-I&FtrqZiBKv#hm_ZX=p}l**xE6`&(Dk-v$+y0uX|+b%_f3SSooxhqHPTa zl`#N6dU(Od^n{Bb7G(L(DL#FrGi1<#41Wx&Vdj);m>>-*hf^|j)O zi<@d!_1|D!p?w7>eENUmX2yZ3T87vDE_hZUL-39-yL}M*O&&dETgAKBT?Pq@t3Sc-!DUhT z>ZC6z^wq^nBL98R4fFb!t9VSsp8P&j#Ts8r%23zym>|~iLCItb)Enmu-h4_JPw(g( zc@qB_6k||b4VuLXF$s)nq;=}KdhnDzjBj{Ry(}GvAq+UQRQaPz5=wJlok>mtC5>JC zZ}t9R>-YbS&{|acf)#o7PANvOcK6K|(Tuf0zX7*Y^Pz+B5E}61Y4G;(ph#3Xgr`X9 zcFyM(lt!Tn@Bf%HRvDx7es}noyyT^2qp(h-7%2{FmS;6fDBp1*hOc&?Zn2B|5&x4d z^q@d9{?7n%fXUf^h_Q?kN$A67{jsFc48;m=V~cGB8D@gs--WN96`&!7*P^&gFu+Cg0bIRa@6zJ z?U3xhd8D|Y*Tj2%nt|cA9T|m$bFaU zswzH~|3w%M`8yXu!;r@{{1nQ5yOMd+g2NsG#(0OSv^xObWRbPT2;Lza*XUMD$w`Hx zO|R)QeyPLD*Dw)`u>a|=-ZzU!pLah*I2~^0nQc>H63c_ShYM!+0GO|3VeJ$-#(*Iu z3=}F1)Sg6z{98fn;qCkUsnyougfo6*(uwiQ9KF0R8l0n^D#V8#wG@Zs^7W6;dCg(w%dap95tVD-UiS zx_{F^fero3C)33y^MQFCZam+LXGvO4Ypx~{{KlO3vcPP6$RCXLVCAX&SH>vM%1HGc z2QG(atyDmb616+l;a(2=lT_q|tk1p2tLS<7$1_XbTA`kEzO zc@-@Sh}k~hS5}t)1}?4_6HxAAZ_iOlCC1;GpRKWleyNyS2YQiBo=2JB>pL-p$_zut zR@E#Nx;7|GORC}WtIq#EY}N!^NdjJh{R!&Pon-s4ENc5@xW&)^eWj`GpL3Ppw3*XT zX-+Qa)wi;&By|0s#=+i;s#q?jh7*8Yfq^M_Cu73=`mM!TnTqV7?Ias_$%@gxroc-g z0$}F5v^c0Sdr0TJ*L`OTr#a-~ogYAHGur_*6n}r{`T#bXk z=Qrf$cUP4SD=h{`Ym=ki84s$LAz_i}5ZK-+yWMQ3oZMqFc2olM(|JkeBI+V6Ci02jSGJ z)%)ga4r}O5FJiPbss;YrlIO25Pma+!2Lpb4G%q@$`v{}erXaF_P{0(#4IT8Yg&5!; z$N>IfsZtx=&Z3dl(%))$O6FiwJi4yJzUp2S+Cd35S()BReBmUr6R|->ms8Uu~_^OaDl?VDnJ;wKYQ$jaKJ5Bv=&Re&(Yy*afK2wYo zIQ6T$qhTlB@FrWl?4~nnU->iN6S7eaje}+6&MrudIubj>+6N{o7pi@3r(_C3 zeEfirmC*+OW3f;BH2>{424LGQUQ(;J7D}OlqrQk(YCi1BMAfx4N1dxgGob~W!@^OPVFL+GOzLw7=5n)C5kX|3>Z=4!eRV;3 zr$ecgH8T0!iSg1jzs2mXbJ;KzX^GD1!R|&CUJCiY1Nx977{~!b2MuVjsWRuAY#2`* zj0xsQm=`=4h=S`)yYH50ZdmTwnvi1154|+x_Gs%Sbk#s4<5@-a3(Gs9%y?ka{o}l3EszkzNB1v50~=g=|)g{r3cbNp=eNOFNqUu z^l?Ga5Cx@wl9x2m2WB5n=DmY+PM75OD5^2{P%y;U2@0krkVLm+;dqvdk`aFAR>I!T ztn6Iu*LQGMqj*o*`L$SDyu^5)&9`elga=7)<}?AYa@O~Xi;6)_=pzL>K)*_o2ymx0 zG1SRb9gW#9ezf-qnbvTr7otZpoT3Hzv|2xh9_@ll2gP>HfIrEa|4(qXYwHUDAj+ig zIRsIDtLpPS#h4+cfLCv%-1$g6K5BU};0EienJ%0cqmk4|P`QN@UNOvRUoPGXXR?n#*WF2DNLq!X3eNA%(++AR2`pFVmK(%R9K z{gxBI{I;2;)eU2dEVhplJB8Yc<1DJ>zi)ciyLZU8^}0TFUD&;|N5h9UxvO5`(m$4- zSnK++#51er@W8BP$FOkOvNX$SBR{StUC`vqg`V-Z1>ZLm!LuVp4pcsbk6?8 z`z?{Gna#rkzOEK>*7oxSiQWa*Slwc@$NCRQ9G-n&x1A@!7i~~>Jk})d;*80FJ5}Tl zN*M9s1pT}l_Yj}nwccc(f#nvJ z7xB?75`f;#eh9NN4TxB7%i?Uh)(|xnYex5)!E)l%=<`-0?C3*`#J%+hyEE}(Z+SUz z%s}4biPMYS`+8sBwFtfG@OZ+Fj`ulq;ndHCjV76}qylHq-tN`$i>xti(F$^TiEX0Z z-rn|1K{scRVYv$%2d;pz^#INS3N>;7=nL`ZM4xC4xIrQ;P4WF+dvEq^w3%5ko+vlv z1Et>g9s`oLY-?L|cu##*n0Uh5TkgAVxs|O6|H|k!w)WSlzPm=T(Ow)Z2ugtb55pRp zSV6y@8Vo3KmzO4#!8qEHjiOcl1uVy{ku@0fJqwWGuVZ79PEOh8_THl#9l`v2J3nt` z259EM-p;bw4)!5#NoW<^pS?PLJU(|vlzT}-1l`ngBe=5ZXpzW{4n4EXZoW9Bia~Y! z*?7R=*gLG?bY7c9fb%L!KxJ^G)znOCrGNj21t0{_9ywcE095xzd;Yxdw!M}XDPX1D zHZ(K@)}ZL2p`osK3R_Qien^89>XS+n(I;(jaYTIf<59;x=Ld{#Lk>Sa@V~FE?XqBC zVnSgy-)NQ)l$A5q-od+dD~k`{sv!&;% zbbq9yI{xiKq{4H0NZ60G?czt7r>|~ZM~>%O=}*{01e2PrwMf+HF8>h1yShV0pdR zAp9$)q5x2;%tE3<%EACh5aT#CMNRA+6Ht@xj}G_9*UfWx9r*b8j5R0brQKPz{&~M! z9Icv=gfiGdX2%XWGyZGEcW~omeAX#pNn2$cbHE@~wcPn&O^&jK_DuX$U^{O}Na)f* zvT%dzcEwqP2>R*4EN(+a_YK`*ouTuO9QN9;{A7pv`w-^6?=bW;xGk`nask3ZzG9@~ zCJKub!Es9h%%7)LR+O98%TI@F zMyN28?%P+Iw3stE0+8GwkK6>N(*L9CE92>m`~Sz(m}#cFrn?Q(UBi*X!8p37rl&c& z+tgtk9mC{N6XP)5n~q`H|Jr^3?g#%T9-Y@Y*Z1Rw(P@bbXp|U%9s3B ztPq=&l@%RJ#?w1K9zQM?c;k8bFQG6elRN=zX1f!%cteun25ZRq1KuQ|s!^4E@ zT`3-;3wXWEW4_l2C))n{ZBAD~iqJR^6AJ%4A5_H%`bYGNCSuT&8jd01m>&qk%A~^~ zG)XfIo+jEFKm*aC2MziL+-{+>H_h%KlWV`Q*V{Oc+P7I`QjL7$7ER=9| z#jdebzK4AD#6T`b4_wrptIk$Rrc@GYX(C4&h&o*~6l6ef#ZxD+4P((KU-`@x|6{3u z(*ZIotdx|LEDkVmaMeTRxV`V`a44W90Od1kkzk4;Spg|#GrU0i@$Op`E$G_sA{jpn z;C;S3S^IX-u5#*oj-Pr?v@x}H=&_#JlKgerNf+`3rqVz={rOb7t9al;^M*uh}FbH z9?Xg-SLg9H?^ zDd@@l`T1#Y^SyKr%_ueoEPP!IR4snMVP&g{B!1KMYM25v!uA_vjIekF*tyBqn&cwN z?#Fbr0Sx}Yx-fViPH238{zD5OU(mj+WOO&olTSe`{A`h$8Z~pf>(g~#yIizxTIB{d z)1cVaP>KX#nDI;4(XP+r<}lh7Q<=^S6Jhq}#r+K2+}!-*yZ&crI_WUnm%PEug6x`X z=#Ri=|I^YvkV$GcgzXtKJE%M8>%1Id*ciQF3m8skI*PekQCZnrTe#xy%*Eyb5n9b2 zGTO0ZaA;}hV*KjUrAQKVUI`uj*l`!JBnp^#uoy^>I(?5<*NYw^wJa$+@yHX7mWE~G z&uVz3phU-^r7KX{QH|NFn?jJOeR+NW{05t7jw$JGF*GeL0#Ewt3BbNaA3#s~*hse( zsT?vZr!5qCytYQyHHme|W>5%ZQjdLl1az6a!oumXm04Njf94G3!^<-w%ruC1O=g{9 z7$Naaxb+`fVK(DGbZPx`y}*bXUPePW=EOz=?}3bKnh_FF++14XSZ@c z%+=)RZ#;XlHQnuVY|aN_{HqW{%a};0`kny+uwf$rAuwFj5gs@7bQoY0H(*9jM=OV4 zdU}|PvXg$OOZtAUoeFc3nf=OqgP+GHrOA99Mo?hSdbc0N|FD~cdvOeYJ;Ba=aiGkF@ zTTFQKNXKhw$GHfUo3F2T|%AO6tb*MrZ7>pj-a*)6wO0rul?3Aj) z>+U8;?db+>{m{JnK-I!15CbdYZTo%egI|59;O0vFIz2Tl@ne`C@3t?S`&n!|y|)+N zH%=air#oLrbry}s+W`E$Xd<5E)5T>`CYxbo0DZ=2xPk_~S)w2>J!QP`YuWX635lF{ zt0xP-R2k9cABUyyME^9i?txY1~D zQudl!VETz0BM`$wf5IK_$Z|uq0vKY(ID!Q~Lz$zD+Ozlh495%m9UZ%96Tc=B$zC~p zJzZV$<)L}}6K}gb5?g+b;U=QobiM1QP(^^c4V;1&-L?v)yMFTh(OAiilW&yV56eXz z{gRZqqdb=h7pB5gMg%#j8(5f{Zmxe7WJ#2qd!7BBD#60WMwN0UHa$12F&@~cDvL0s zk2t^IYF1%JEqzAKOkea;SXEih{suiU6;O>@P8Q0}zW-YlT~);bk?&ck!GLXp4~StP zIrX2EaOC7Hnzu9Vr~>j~;e=%H#s0G^uBU!9z0I^_?-qWY5%o=dH==-8UQCl`-kjR5 zdE(LO3h%$q@=i=?;{W!!IS)9?i;u zH5HIl*~#H4vJ<@3ZEU}d@&#AmFFv3XstwTIf3jBmgFH!$4$W^CrdXJ-*L_;*V+opX zXGC67gwqD_tp8ABXo(zf5?}w7|FnL;h!(l}mHz0Alb-ZhmVygB_J>*?g2GIaExx;~ zj5*eZgL8{Tj=bu3?;A1+`vQM=Mgr89-QH_}XgFfVZ?jsAQ^Ej_=Po5y);vnoe`KMf zD^$ME9=SsaFJrQPYy0{z;?N!D^rn&2cyL27raCtFD5qS<6cwrN~`Ucapp(N zO$=xA+o8FP65!L*CBhC@y9>%DSVffRN#kqLBbMnZU(d4K?&P=_sS82t0U3IIzc1;cEgw!QR#BsO%Z4Jm1ANhskYWtI z2Ijz7*ojqT_|XPoY)Ix~O7S{{tI)MO!$Uear;XXuATWCT{*$HcA7SP3VMW{8e(F;% zRl)>x>2ICshd*DEVqi@EKw6fve<^(O;riP3!HJm>BCI$lD(y}vKI1-caf0vp^J~^c zo74wsV{y@MtXs^H)C=*YoGJu^Yi+c>KWC_DC_na35u}`Kr+qwy6wp^VnF}KRFc$o{ zI^7|O5GmmW-JYFwE02wU|HQ5e*t{kS=#-P}LXH&gxa2L|O*J<06$armcv%EqkOV#6`v||d-ua;r z=YT+@9CzKmz`(%3h6+(+=rZWJ0{rDZomS_BUb^ZEOJ#RLhsUm%bw$#j*Dl{%HX^^g zhZ`)wkxMZHn7{f!0`Q7FS_=TAW%=@&pa~-)Qz`Or_S0>?`?~<)Xm17nh!<&ZVaS zEby%%F;oSDBqbz5sDLmW-<}ALpORBjU0rQ@j0;!32QtC=`M_J>PPa2G;QEhD;KSm5 zJmz~k!$8$+1sck8-lST4xiN~SvYY(W)~&HD0T@qH5rvaHc9|LFuCdapj+r2XPv~S* z5{>$FnAV7q%BjONd3yBHlu$}kAzk;~84hELCvF*U=;fipUjftq%tqr!9OaqI{oLpH7#DAa=F{8{ z*SYZ@S^24M^D*l9mbf_i=BlZsJ6!?0`BxGklYj>%;*H~D5G8gBaEF%5` z|Cl257W7P0HF!u-h1dTn#6)r7H%h2v<#V{AK~)~gGv(p$Lvf@?UjG#K8q2M-9O%&Q>mXf^0k!V`jdrsu`a9dOFIrOaiG^5|G^*DtxcZ!o8x@8 zzY4uAP6C(mf=cW{$lmC>@iD~@d|k#OGxI{2)mP@x-xc$_o+)5^jONbwW1E>Va~HQ= zqw^YV^B~#X-1M@%h_Z45B#AEv+c||Nm*wPyEA>>s8ak5Oha#+yk%wa6+w3Trtvpfr zm6)(MY7o(;mbdI^`m1ppb;D`huAP~@1XAyqAQS^;DW9;U@JlhnrokHT0rQv9P7Od< z8QW?^YLHtCBEHq|NZGfsq|Z=i2-(@$85s1aCVnoRiH7nvsY!&-YB>kAsVjr3*m4}h zM-ASj{Q>8%pZm+Nd9xgzNe30GenfY?^%MQfB^5VG_RG?e{`6cMoYQ5|_H6abQd}qu zjg;1Kez~QQuU(`ed?E~Ow)E~7xJIzGdhQgS)D$&CESi-~&&EgNC44_dYDxoFw4O9# zqHWrbNn5#3ve53qqF?SGC1P;!6Bj>Vzi&*zJOvFMRoF4RJ!NcBX;+yTo(MbSS&ilj zsG)XPzf8UMeY{hFaYs0+Oqk5Wy?4EMqZ|po(ZQKDgiE{i27bzLlZR?+P^fOmYEeb^ z3=?5jeD*#Mhb~F|R$*=PPx5CV5W2yXtEJh>(Rz3|3tv+GH?_)>0d19Kgu<|td`0;i zvbV3OjEzc%jqQ<&E{1rfzJFZT-mh6df8F@WQZw9;uAQ*AI!tZTu70<4LT&dtXF;5I zTDZ(!jl2oCfMl>D6fS^QQw+ofdIK%NAM=aj#LK1{+C!?eo0KNQM(9$)lD19Dj&Yv&U+bcMb5CZd zS|45w%h@{@h9zCcgAu0xonq|LOYE4(bK|ev0T`{gc9EGomv#&5Jr?S<*mYc{!b-xM znPpM=TV}ey@v|$p<;V&FWnls9x11eJa08N?6ETh_A!o@#dOq)F)LxI#|k7g*A-Zp%L-%v`ufg} z^jNOSUzy!~if4?{<~3Of?yWD%%X7U_6|Gw>xyzyliZ0*dDuq5cu&+HbSj}{$b2Ml| z(^P3d{#mKP{p!&<8w(P1by92jFEa$JKNo-TH&eVqgDa+|>y>3L82~`M>GF6L8ea0|>3qM(if;9FK|4 zLECQMF-Obz_PUc;Q!I34scLW?k@^_K# zqI4Tq6xAU?M$@=9Dt9^lO`HX4@%;uggNt%ibs&b?_-EmECP=gci|E74tCpN0BY^cK}b%{-OK%6wt%y1t@*lBmnDf7a`UeW>vEws@vtF4U#(D{ zaF{h?GJD#}bS@~EQ`C=Aq}C-OC+MWd?7mFvHv3}l=kA+_8K zhx5UKZ-z*tK_$LTrj=m&$3I`gN#>YA&Rb9+l+cj;i!2;#6*=y7yRfGN8oyZrye2}f zF5B@8mOD|+oSZrrtDbuBlzQJ^I=>;ySZI|DA_czuWl)-`s4m4hQ1qiMW7~zPtEyV< z#t)Z2ZVdw(9Vh_Tj%;G6pv)1IDUo-*r?NLBRrOcr^V;f_^HVXwQ0oJc3>6Fx6|d7m zz>yR`>e$u%eoTS3LfN@SlA1V(_KQnWZ8QkrEMM3zH$k}CtHzBMsGyR5h6pwE)W}Z{ zsvk*@*)<;K#p({ljucb~e`_BK!Tp}`w--fZa+2DCN?Jv4z3^fyWR4Q&SZ34QhB-AS z(z^Jr&aKccJGUcSC{?VKZXbxkA4BzQ+My9g-EPIjjZ6bjA%#;;&GH4P$Q0*qBWPby zQBh$A-Fa~MhF(;w+d7uM9U4CoJZqM7CrGj(TVYk}3Ft@Z!1Ryj-sT3b4v?qi-p#ye zH?PZIKv-LpW9(8iGs|B1xl!x?n-|6teJ5?yaWsr%mOl~Eaj8xno-d>mL-c zdPtozXAk?o=D={(ke4h|%2xR#oyJWOZF!WMG|T!`5?e>z3DzqeqxGKIWa;-G@UX;C zTX7?xUBZsk4whrTq0FJgH#b6;hZ1Z#XWgB3?r;NhwAt#9py7p5qFX+gIU^N?G|Fif zx$^k;(Aca9^-$=v74myRR*ZB6Cj?boNm0Gu#EUW=3;9rv$9IFUfB_OIt~$uc`yEp9 z9Ow%ZMr*g?giivbq5Pm}dJXmlKWC|JMa{P zPAV)bGc!uSmc*O~bU;W*xW)3aXub_F(5vSJ0XkbtKJnpeSINz~Q zNK+AFAd_D)`>R_{s&^P?0!#sbY2mPEa&Epus41X3V`{a)F{pbBF=F9Y-odGtp~~1& z$FE+aXQ=kq@P?=9UeH`M5(T7cEU4tbHMR4T?uQhti|kkXciVql(MDor{PbCh(XDpK zCJ-Rmd`DsN>YJT97fbX{21o~$?<27&#}>E*Y&;;!f?yk*PuACpvK$fp^Z0%GM^$eZ66a529T7M)B#(P;?XpGso^n6ob!xyiM-fnK0_bYblJs zM{Mk$&GNanz%`P;D=k*fl7x)MzpZcbb(&i@^Tr6Ie8&Kp!-ZQlp9<$o4nO*$zfguY zaXpQ+_G>_LHZYM4NZ<0~o7^4Ku}H-ewA5V}tOY3Jt0~HXSXil6KS?DXadgtZ)jC|gsN=bpezpz1L~oy@5B~L_3mJDec?5Ob=+i!m-v(s1@{O|A7a z5iq`ub4!7johrm~Oz+R!boTr{$Q3!VT0{}vjk(x_S==B9b-$t4yINFvT+W#g;xNvN zRkxfzgBVbN{?tt>6%rQ(WTnQpcgNl&2h6X$cmx7>xRZq749P+|_^SHT_T~MrYD>x@ zlF;MV-ZRjLyj4J=QAgM5OjD`u2Cnx;z;k0d@stX6@ewNH3Rm$)z>Uv(XP(yxY&NfUpcq64k1a+GkqK8xG=!~a`WHWb~J-rugbYYGBDpZGPpSwGg zApLkHMtV*jYB53GS2SK=HNO@FsC2x30-aap9~~RN%(@W6!x1^vMA;&c;2n*9Mm{lg zpxJTK^T_V*?g7ouXIFhChu#wLaL?28U5++#=MpMnwCo!vO#3G0VhuzQ?F>FGo$TA2l=USu6(#EO2191wQ0%D zya4$5ig;^m8iBTcRWeM6PwUkaRX&H~&OZsJgo@E}|J)=H2<7zbOkI3E+rbTa8c+!* zNPf`W-Q9Jq2Sq)TSJpHoevp7)RX0*)IvP76ouw2HDi|YB=$NXXp|~th4)^xbHS?@s zj$YL+qhwkqKuCmwcj%G z{&=!}Mx3#B)*$)}t`vM`_KlYHj51&RlT?C6j=7`Wv?!AwH}6+q(tEQWL+79ZwI#M; z{=c7Xa}22k`fW^H;h#U)Ic$GXCWo`kfJ&I?^|Wa4In=mqMOY`SSvf$xLB|rr9-RwT zlMmD|EN?f4ei+b}Lg4cAYY5jWyd0hCC!TgrTJ_nF{b}w*ZchyU_2#v@bbUb}6Msf} zN?(khp7Eo>;>Urn6<84{UsU0W5z@m#u`nZjrkTOd?+so%FoHjo>feAtjH4hoxq4AW zMMaoV1zqFERPFZDz^$Wi*(^DVk%1wUKyHM;G7kTGvECXJuuv>cKg9rG)ClW7 zG}BU*M1DSllpJHreY!b@6T;Kv+D-;)I~KtsokilugtYzu6+Af=G0&!^7^bJs)DeoC z<6594N)>x>ys{;7XdLWW1WVOtDQqes$a!O2I=o;=hLCz5(_C-Wbk@Wufi^Y@Npe$&`QZsK zH`TY0GpPzfqLg>rYs0#?dWyiiHt=~hX;VF~nnC4XJ#T~6G;1_w(pgYZCb}-#mZ>OeTC|Mndx{3Y7Mn}T zIN1y|r~GLkn?SZC!-+@*wP0ihIx#??P5y5ObGf$sX&0MG$;A8;l@L07+bPu>H2g<@35d@jRDGp*?yLST@9_vsLv#dn`uQ z#|>)4Nm36Ru-)plTxKL!-?9lyb>^+DXYSfN=)qP{BkTAqOgyS6w3u!lO*r>1gd2kixt=k8PrM> zKfyDMv@Z$L%K`OuG(S6UYC7c=PHBVq8Sh!!;Hh*{l8mj~YlEedkky>NsyzDSaK-xy zU+#ez3=CDPgH)++f4iavp&4$iL@A+ljhvG-t~yjG)@Dw=nUqBhCFm=)kVMUd1@6rDKo9+W$ug*!H7hIyN@xm`Q#0;($ zI{fW8{d{ORxyA{osA7cng?o-=pTruLFfo?Q1#vJysuiB?hcfiSMYVt}0J@ZRcC75%O9jnB6UT4$@nO#U#py*EGaFvzqo;r%j2D z(jTA^)TZA<$=`YJ2zkP2=9DDCLQv8-kqma|Vy}&MRCAAJ>b0>h9VN^wC9V3w7U;Z9G|-3_0^Z{>D?qWb^8d&45Pdsju&0TvV*EU?o7>vT zt|oKFKu@W)DL{~&`?TtdVzgcJhJd-z0b{91fw=1zBWCG zQAGJw=s3*QB4CVPj)jH!TlEKl=af>%IwMjNA3@oUa!yg0#Gu_xE=T zHZW?wCo2s*B?H0qV-&wW-n^VnNtx;$#TiZKwn2&m)_v#4b9lStKTS2$l8^E~@qZ!sZw0V)24K78M@7(;HPmh5&1$=M=MYMB!HB;r(=58_Ma3A=&aA#joN6D;m@HW@=CO^u{A5}NUTOMviYCU#v9~D4z z!*9zI)(2NRPVR0<)U(A&_6@!$YHQ=KfOu&EFxHpY74OFV=tENW)+VWGk&pd-$D^hKS4iS528xn(puGBSsjx4Tq}Jg6=oD55VSF6~&X&6Q2SibIu~I+5E+o-fal;G){UrkkJ}un^#5qkqK{-9eii)-b(X&rQ)rO#p z`|M)isHqvXwp#8qcV|_XND`P*N_0v=p-q?8Ebpe<<9(@5o#jxak)iE)o{GNBXw)8U}Dp(aZ7{S;>z=je6PZnyi zl$m%_v2T??X2~8`8aUm|wKO)Cl$sVXQENW1s#O4w9xhg7KdWTIX%kg7`LSi+?6FR@ zG~Z#OJ`*l1KQF979UHeLuWsC-azF@L+IyedSdO=T?1R_+&`z@&a4%F`%#7#RDH&h? zeuwvY-l-J8We8TLg+jm}>v_?Cqg-(L>-_FpoArN3nNM%cTMO-%H%HMsp|8e50X9FZ zt5@00{D_4DEe77r(BC`3Y6A>F?y!<*j=nSYZRYK>xZH@`MEQe0`BT)3@pJ9!Fs|H= z`M$DPDfPT~4)42^np7#N#K=_)Xiac~jx)H)f3iLQuxTx1Wc(5T4 zAHr`#iXWNvZrdy`(l_fGJxG|TRd5Z=sWp+QL+W|{OR+IB)rZ|x4KWTyCX=~%YnGN} zr0uTE#7egJbnhNlXf%gdbQ}B1cQOwtja1&#}O;ly|X<516zL&0Z1+24v&*albHOqC<6)PQhKnNi07S+X)uoAaj)5a zEnB_@2q27s`e(WWTcmP+j&qV-V?D3^@nlF*bK^vx2g!F1CbpZ5M!)0C;`-jY4`z2hEizX{#R&qzbr_~_}-}K$9L^|CM;UT1{qzY-3ILJ{nFn3%Zb8sanM1qRu5Y z=z3hq5dEv$ds{DPqwUx^SGZswzxKtHs`9>3zkZ=y3Gp}XK}v**Vr zBbiNWy&LVr8RJ^7Zrj*$gfVK#B zt*VPD1*qd<^Nr*cBYvQWcQC{U^D}LmV3+7kHbLXdk1C<~BWu4W7bsrTIBCbm=(n`g zoL`(g1EvWnu(61Os_R)lijn4LWsK_PB8jJv(~%*Xvt_}x?4leU-zysR4}v@kz8)z? zG#trS4G*{}FGpt1w?@FFNW&Hd2wp;n(W-$ui?chRemyeVWFq1Y~wU;FaG&l z0;Bdg{u($wrOCm2#NA5_l?sI&O_BOK7WAXjOp3QymZ)>Nj{G2A;}sgCs;K)bHu49) ztSHSVnUftq~vO-AO^tNd`MB(1Izm!_LRpe)s zpL3o=)0q75-;h(G<4_C~{S<8G>}Ci+OL(GG7=V=;1~WTN930_EUoTK-P@R$e0>U)y z^diGNmKrP_I4+?RB1g9$j#5=0ToHIIraL7e4G?{b5jkR$si8jHf6uy(i2WF^6qI=K z{gWP(-^&g<21y!`ho2G0(l2qCUSsN_s?B&TMwh#~tkAA7lAdNZo#nml6j2Ih)YieG z`ta~lXSXtQxtJ>_)YQYPv2k*u#9TpRcxW37p%9!RbRo^R1#McarrmrPELI7tz{vhZ zM<&|b91>A}W?*ok7z!C8sMz^8hHv!;O;a;8Liz9H4_l%*5Cj!ESopFg?x&p1*Q*MU zA>&r54?*$9uPtCV^o7sB8T*PX=lFO;Yzwl6RY8lohQ4M%RPra857DI@dbbtWOelI3}Iy7qqE00Vb+DEIh?vUgVe_3 z`yn2iX!DD#=iR14n-k8?huH4F@v4eLVLm^9B_p!KpwbNG-h_WS;w4F2@~7dly4_20 zl1!gI^AVQY!D5Z`4phTF(f-16MSDdFEO`A-z+$NCOHS-3Si^dF z+RMYn3YG|9Ub>>`M?C?)`Dsdu(5&UK(gxOyCz`k9d0#5gE%|f*PYDCRF*G3JOab=} zkuqK^5U`Zm`0yKfW72$9o1WLwxGlwcu3`)XeB@$f4EJv^wF0K6HI|OZ9(mjN>;R54 zHnU3)@W82&z;Be%mtMI6NB>Yv%NFpvs)}nto=jb>0WVT=nz!WR3pgF3gTTi zxC%L9IHE~|#$P;GZcNNEq_|0QqU6HZ!*~Jm+uDCu;B4MY;B0%LCQS$|*(czwogQUF zPY*5pFQK0UGGX2;tz;nN`N&c zq*A;0L}LQnZE;3Se+&7BS|mpMON$9vNp&j&Zf_|vX4-oG$pN%VYZCGXg9Y&`w|@%= z_dl~Q2RJSF>b4l&&>UW&X0^5XrsK!%cqa&vggUexEiIXXZEWZzO!Q4##iIb8|MTb1 z3%`6Zh3Z*40ey?8J5k4KD!3v!vxU}C#YyuBBLv%rdnPHR3C=Kd>xL$X_HVAVK>s($ z!p{u&Y3bNQ79WFKsxi6aa&+`8D-8BolGF3^&1*c<4Um(Q_yAO@x<4^&e3}Fx@aMbz z60T?tf~Z;SVo^AniUF?J8=-pdz(t9dDU?yXz%9w^7f{yzcPds?VoAm)D)hZZ0@aO% z<`X!;LMI+aHPVc|RNki1r24D@6J;b`#=zl4K+9{Jt+*)iue#Pu zZjA}?u#@kV-;zH7ay5~i4M4R9(7OYe5@a+K*8F_g#19t$uDFmGimsj>G)2$vQpU?7 zp}AR@lan)5x1nk{TX!VAp0Di0VuM3vUF#H#lhfAIw}h`Zp@v0VcIG39w0owJ&>1%n zIyx~bTC&#;yqEv(7jGF|1NVt?je^vU>Ri4YN7{x#fW5?F(q0niSEIg_W>G5Kp6+TPX{BgR@!-+=;@vsg+h>{&grRy4!6 zKpD`lT{dI887w zFoc=-J$z)$q`ZOX^WhO!^=PbF&$dchZGoaDAed2f=CC0C_dz3{U*apb$7r@K?_=Zd zBMolu0^|npCyB|FEt`m26i*>Bsv3+C`7ZBE2d2n!Gm zkgtI`Y}huHhuA57x)Q*h3roHeSE+CWzqM_jyw>SM_)IG&m_?0HPh<55W_}(v^GkoP zC#}3yBc8Jr(Grg+Gu5pDPmIy`GBJ%yypwn$84GE!Ctq0N9MN$zl=tl)L(yKusI zwpVEyNC2crk}yoJV`LJ-Y4R~Q)L(XQVeA8~n7W*bt}cCu_~P6J_L|x#_aXTBI53{k zN|qBt^fV{UU(@mlfFzNp2GAwQq|qhi<;Qa5&}^IyDj|ju3d`J@zj>SJDK5Rg6(xSz z{JtX7>EXvqMQKbj`-P5n-UfBc#vuBLLTI;Dw5O-NH@$z@I6`(5a|f$}6%`P+_4D`y z)*si@13>1Nd{yMTnp9>8kg3xP1heo0rria^^VzWARBw?>X| zk&_7&9kIGf3)toN1I6e18XbEtrwgwaD}sug^LGZe0XZf3`w_-d zYA59F+qPAzs>!#%{uj-9LCa&Vtx_XI5fVXL>Gm2*ROHlR`yUX-h3Z<7H_xFcm zZVVn5!@DsRH7w``pOt_i_@3@2>D*+fDYOB4oZ9i=x8 zfQ$yeb1p12loyB#$^}xu6B6L3SZB$8fUwSTra~twHa09eT7>}3`(QrAcAP0aCob-} z_VZ=Hdi->V_Tw7BqJ>TLM&L{p%0A^ZstabuW3SB5hJ$OA5^1oouzH}3O2jKgo2S=T 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 H@a=y9kkO85 literal 0 HcmV?d00001 diff --git "a/projects/Team-7-DeDrops/contract/XMind/\345\205\250\346\265\201\347\250\213.xmind" "b/projects/Team-7-DeDrops/contract/XMind/\345\205\250\346\265\201\347\250\213.xmind" new file mode 100644 index 0000000000000000000000000000000000000000..a68754a005efe5b5c1f258b914b046210b2e3e28 GIT binary patch literal 158192 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 z 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

8mYl2>_{_2PXTsNy32Y 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 z z2IS@t)X3!YjDI-0)CF9zhFH87YHv9Yn$NiqU2>E}l}qlBViw7-!_uyE!GUx*#^bt? zqt*+MA>QO^o>76yBZSO^kc44-#b(rKhC_<{^~!dLqq~VLVZLR8nhC5{+eJGb(K*v6 z+V75_J0$>sFBb8pLRr##ARqEi)>~^2jqzy_hiQ1OkM*TM1{^8?qDbP5;*#9qjdk5K zoq%1WWCk3OHVo2mS_i16m!rUk)eb;O0t@w3Xr3(uXydgHvr=&%590h2^Np_&A{g`z z=5WxR&Icb9B;RA9PcPlLplxacnX(Y&ODJFbnV3HG`6nPE)=M@Yav*q)6qH0n^t}rD zlMHO4;gaO?Pkl5_I^gm>;&LF7ihc=sps^hv!@14!-R;}nM`%qt9s*Rer3gFuZjw6j z0Hl{MBH$bZ)d&mBupAn54Z@J|qHtn{*HUoF69=IYr9up>CD+7DRH_u@IzF*p<+%|i zkqtIh4vyDg&Y)jT7f8jF!~YP@joFz8MCE*St5C2G07?l7$YC46u&2BYA_>3|>jSVu z0UDb__^?TCJTqum>0eGC-FxKV7C9T!5I$sjmpwA(cgYNWQyn9|k9~u?r7i$mzDn3G z;%n90nTXPeEnBsx*mBDMK|&~rD6W9sGs|KWTXC<2A!&plr=@oxfggfLV8}4XICWUi zX(2FJ=gkZ27#X#Z0?DeLN-tvmBd)mKLeqGl%s4P22*sJ;Zp-4{(QOaS6pi$>F^OI) zGk9b+(Qz2nE@fM)lQ)O{q&TM$eP6pUTOC*LeKf3Gy2FA`-;s$@Zluxw7RhMs)yFml zZ|)beNzeDF4NZMt%o-gt{_Z@KGsR~srDDc={?e-`N#Y~jx%10MhA-Gu+a^xrei;kn zF6(_e;gWM3^r=SpD!n^~4%`8c%MWk!5TV_w5+&6DEOrEh)atT=SPr5@F3|QkLyW)p z(*ku2u`oZ1J5K^EM|RvBDcu1~x~1(B6jlSa)_X-+BdF3P-kdYO%FT3ib-Y#ljN8_H z&hZ~EE5JeT5AD_B6Zmu%iiZ7n)=O_A z*u_Y;e*7$DbLg-m9MByQDS-oYljjV$bTKEs9o@`C!gj4m)hZn>Q0Wy%;FQ~q5lxUK zz&U=W&|LazfV-%#gp{Bgd=9a+7cH^uV%uZF)f^>!CoFmLY{y%u4I&PS%gZw{G<)_# zvb}bw*1z{Kc0-?37yiK~hFX@)i#0DhZ<`xy4cY_rUP$NROb>4%34#bnMWB3|Rzk>Qv}tPwUmT%_(% zn+C-%ISF<1YM`^=*GgmP=235d^3HE?^r?SJ=y#Z81;_a(oW_e5{TJ`oL&ouYGNKMn znLPg0h{Yi4CK)L`)ZN${D>EalKj`7wVz_kYd%l}asCE#&o>&NelXBf~T4!P2(=iK+ zKaxHyJG~yG&n@)1L>F)8IP`*5d-g@g@`3TgG210y#n>%G`~3`zw#F^v**{EWiT&+x{N_Gg67rwUVE zHk z&qL`f#2Z&DIGW^#M+~$9b~Z`m-3o_J8O~OM^~b9Wb&*#TTVm*-`{Ykm;SX~w zn&Tfn4;TCP4*8jVZ}8-FC@r=owb|{b_!7JPrAmL$H(b2%z4sQ@zC!grAW<*17clhc_pO@?yZ zzeaY{o+HgPV=7suG|t1;|Dvoufb2(7?aoMU0*#&It22V(vg(kZPq?Ph1$)?PaeDk% zTC)5dvA#Riv!+L)1g^Dm(FQDU%GJcV-Ify5dtmkc1-s<;617;z!X7{V7pu$e@s@n& zwZu{ncQ5S6T?^Ca2GLe~(y9r7IyLb6>09S@-@=uv4of|Rwef>aoB@{NbmgWa zQ)T*DI%bB~W`u7JMb?Ri&5foI=4;%R zRzizrVPUaKX(f$%Zv4`#Q?FO!U0JZq>5LIc?F;tB!^^@x?^dcp6q(WsBTG{BDc48R zHiz#=_ZA5XV6$9=?Bja0C)GpTNEE*R5LJ-3O;Y@EyLzG zE#+8oxvG1`COtkzVaL-D<1$X&RF|nIUfN5QyI6Z>t1(Jg2T+R?T(kco9naixw@2t@bW2^L@|UjTz?rQmYr=Slifp3MYq6(73w+$*h8@ z73KP{+@-VmHqWf?6m@=HSaemDFg&}+Z^>^fwb9gjrJu3$TD)9jrkS17;JWn%mLQ|h zEdCen@`)ntlPJT6xz(^GC6P z;!ZRU%kMN1;F4*bIPB`{AH^8TlALE|OCvUQthFyI!Po~n)Mvyg9j>v1l6{l+_$v*|&@lUr_UbsDrK z5l!J2qK9e&)!2+=Si0@b%-d-sEsnFtunVx)U#J#7MR}Hn$6+alhU4RSw0P6anB5#g z6IaPdMg<;wpjW?Za@Lz2eH6^F(W52DmrlnycF6SvN2ja%{i_ZzP}f;H^A4A%DqxAh zV?`oy8UcqpP(h>}&R^g|DS&m2waGt5?E@5?7|w2wQ&X;XAC8(Px>ycHR?RLGHT7bu_|FPYSBZPak_v&{%w(^(!zkvv*~*AtN;8eBEW z)ej7knMA!`wj^p(IM%+^<{fmKEIP8bt?KAn_ed#UxVNZOz*bpsaZ8P13)hpe=CWhP zJ8MLuyX`aAR2^E%_uT$-pJ0pG9JQf?cKhiQTCrC0A!aheQ>P`j=dk8OiA9OsAxUhz z5n~+2;WAoV{cdv(#a9lGdL6{YTWC%$`>=DTt~!~|j4UI~qd|CTUz!JwLY@A7b$DwR z*<}Pi0$4W9jPyk(H$areKuudaeeyBVcr$p>#{j^Y7OU8?Z#S}xZihVYnf8qGg0Yri z2Dh%R2^zTEc@M732;V2)q%oHJwyr|#T~eqsgVh2zC}l=pg7udUXe zI<#7sCU{DW*|~3Wx}aT|$lz`_TOV`%7wOeH8w&24!t9N_fjl!Yy8ifE2ft&-at`nE zX6z=?Vw+C*eMTDy=BJ9)Y`3Xi5svbS{ThoKc4_(iHgcn@<%*kdJmrri!L!@L>u(o% z+;*lEMq9$IwZ8W#WJ?^mVutEX?Dw5#ujvj+Kq~&9>E}F%%Y&&Wdv=Q5qVU#)g?DzJUtMTtifGUfzPnXSdF;SK zc%Nd~O=HTI6&3c^?RpW7>R!`Lqm6B%^{LV1$I8E__$;1kI%IDd9O+*k(7>Os)|Y+> z%Q3%NeY~Y8mv;62R^|u`G_96ywGAFD%)-zwma3MmCh0eXtKnu>3fSGb&dx1<>81Em zdt3Vc*)8wMO{;%fx0OQt| zb0F2+l5Sl8H0P3EID{sq{36Q{$pz@^-AX=wpE!?c4e0Pln&rh7lfd=fp&G6o)EZCp1hp4`d}- za?*1e$??6KceT5l*YZcKcV@!@W^&rZ%{tj&sV{Zwz0c=PZgHiB-qtS6iwVd;H};au zSx_Ycyc&#4GR7^RTIpjvv%kgB#sUZX{JMr3}e`rL!{z0rt`%4ilaMgX9+UGo~}aTa+WKz zLeJt<@T)#u_#7`ChEO zr#Ic#UA}SmBhTn_HDrtTz-1*$`0T$5y zd{+elf6rsN{2b`aVyr;bmsG38o?*^Dl99) zd<)DsDs>c6Z~A5&C{OjV9$ihlT9~bmE)d$Nd@MIum7m60X<4z<1KkGXNWSp;_0I?P z(CQczcu2dVoFBDmo2egs+XR4f=uxDP*BXb{49VU}aRf-KixErv)v#MF!^wtc@aa)( zw1_Jn1D;`{v!*@TU5hgXjAp9Veb=A?D4bPnl4pdtn|6}TBmwMi^EOTJ^phi@3`)y_ zvyHpTeQWnThp*|K*fMe7D3{c^+fn;aK^%S5?0eta$oczUuGoAs?;r24CpjDaHiCOM zUorZDBt&jDqcu8$rOV$4#tmeyq%t_sYWUZ+8)$C&j@;Wm+RxsRE^zq*bFJk|ju|?G z#UXb5e5%RI6?20g?sty-i$ZRu$AYga^iXcug})kmdK6v6Pp#_@>7p<0HGvmZfj z0-+)0Q%S3DCA73U#{yz>MBS1~{ncq!5orHDG!C$AR#{UgBGvglQEQ4nd30QmkI%mCL+OHv;^e3(?fm9s zP*qE8(&puH%+-YHv{tug;e3>98;yN+7uJ?9RyiV-dx(N^K08LSfa=iU(}d*51BisF zUi7q^v5cqVYA@yQ;3k3Bl4JHEslBVv(BMxP-+gaqrg8D)N1fZ`t9qU~_D73ppv(|^ zDd7Mi7kLH=^+#n+{D6HJ`Q5&?ade33OOA$cA%h(07q`9Z{g#szOPP}@En|}wl%L2M z(n2c>pX{PWHAjPQ!|A6C``w}#xV7wJZ6b8PXQ1XUi-&wOcu0ePAf0U z^-@jiS(EiYZ?u_y;g8gspKAB3uSb8Q7Sdukq^gmAVbVe9m`*8C`A*+*tG8DRcBxJ& z-{5P&4K4wD>>UP6#S;tt&klNvTULF>t0dh$5`x_g#P!=(pH^_)NSV)OQ?%-r?|qpV zS$@B-$X+vqEysd_K=y6A*98ARjc+9HY1tbIIh`+OW@tyemV)kwXui(QCzBs zj+UGK#6tExQm4}8XyOXXC5s@F7*>Le+|y90kxqdeV0F;}2Vp`kin$Y9F}X>Rm9xsT zC3N;}=8W6vrlu!LThW&$k2os&p5>odxmpbF&QRgaAfct4Lhl(r!Qz-vZk-zMX$}3n zhiN6OB;1|m(`BVCx&x-xj)~F+R$&@LSuR9FIt&G=7AaaTKi61oX!`?im!5NcnHZaz z7g!zey}`ST=@fPJt5K@S?GetIL;4dVS)Zlr!ky1@y(qESx*Jl)xKf#}y!rD-Pp00N zujIKKiB*(${M-{ogZ92cMaZcW1k(J_u{Xo$DgBpI7D*1NjIZloaQV9*fSzJ@Cx zlUthlu4sERL$ABwVKn8aJKjwM>a)pGzbgn%6>u7SdMO?3Z^RoeXKY?)iESOXQ3 z_`af?1Zm&V$DHvn?MaPN$fZE78v*?y+>Gx`X0FYxp7?oS+3$KUO-<9!98|?Kz<63) z@>q!&nhP<8twwQl)HGbomDW5TJd&pkZ1_FJi}uoPdQ^tV(<4QXhkH-PrZDq18N26i z%?@VSMa|QPo#Wj~qfJ&k&V5>6P>M5{HE`+qmn8mryWaKHPn3x(8=mhvF4(yWF>O|& z$|o|vJQ&Oqy<{*^J=z?$6F{*j19k-Og7(7}&$K1qL#@=xlw;enUt}QSK$ek~LXvv~? z+|fvnW9D&GR^)9ho+B65O6PK(5;wMTpYeNK-Bqgg^3AX^iI%?ahsOIU5mV-h=}FtC zYTt;)m-HU{=IGh){*6-vKsCltj>uXo{DlelRZoV=!)lgTR{ zl_#D!2&u!)ABQW`X`MXy=yVx8Fdx0|B!@9+*nMA8sw?`y_fyqNhcsPix<@p0i`#l} zQn@|`KN{VmP5xl6+qi}2yUkigcXrx=_{Q*{z%cHDNU2;M;iu%~8*`%7U1hse@23h1 zvxj{w9ijjcg`2E!U`H|&9E&x`OABSPbaJGSQp~&+7xsb9K9e~{jz1~c~bT9Myj!i z^x@w8g$q)(Q)#6Q{`qd(&%WNZC_S06sc6g(&M~)ntoZIYGTnpbRx-g@qT)>XQ@jq1 z0L%a#DJlXM2G(nM=+jdxWLuUfxMSJ}-BHbV+A_yC&cjGs?xR?zQDpKS&G=-&4Aqvl z<8YuKwDf<8buWkhNVS#e?o%t|!RcTb3vx+gZBOsB7UD-+!N;9^O2i3N%dBUC(Eff{Bu?V z8rTeKwRs)4J_Z!?LQ&^Q*m3{Oq*ED;inoOfUbbzuoz5IDRA%j{-A>cH)zmsN-?n^U zxR2Fi`|DWyhZv==qk>~OE*=jR_T%jtMdmP`{lY%q79L0C*FX0;(6dp|U94@PqY@fa zd%<62Iyg~mZUY}DYAyDp+sSNw!64AtN)uhN|{ z(br$fKW`?bpNQ45W=OaRKr^8&Yk1AASfeuvJq-|UC7 zbgPSSCZQZZo^%hLPkj@`cfcBf8yH+{|JnfzqB~K1i>t-IQ5Er#$D5U>v7T-G)~)pa z&YvUs{y$J4%zL+xvOk?ahA_YX%*wYn0rJ{Ay_Rd-Kp-s#Do2;9F$&z~s3DYoM?=pR2;Im(Eq6aL3owFc3PUv|IX(?i~*YWBhM zwt8Zs2~N&BapX^-$R7IBJsNnE!8bZglIrdy#?1||n~>Q3)z(aHbwfD(uG6SY$@+wd zRY#bWcnR7Ea)Kc2MF^NC-0V>VN8 z-ExF^VqrqtiBMuvp(0A(;RT7>6p}T)sj}q9%&Bc%_N;4^PU^D7<0p?Ehln1AhpLc%!3h z<`f`0n|4~;1A8NAi&|v^*4#PqXcw|~hBJ?>>Q~j_gt!ge^;h)0n^*X9W#BxK7g9WM zc&Mn;x?&@Y3(JX9Hd;Az4)Sax;7(=0iDv&5!| z*STulb1QP_w_#Al(y3b1PP$s7|IWkhs}lIJ=M7a+L#Q)?=j`)@nTZHbo5c1QeR?;} zKvq$Ow-4Osg=*~H%L6O~zyr}JvFVa}Q^CLt>eTO-vB#4dAf?hS-EW;Ew`sTyB-Hy& zA}TGZ5`@P%~nT|GFu0A-MnHvstrQk{;a?+`-On%dDG)! z>ag!h0`DO%uK%qaYwZbfjXPQh%Ethe=GFm}mG z-GN!&0%_cd``bPGvZtMXH9@)~;8MlvgU;h>M%l-7#b(RnTFj+si+e0Ado6i9>J<$|6was|_%sZ}%7eB;>0~ZAwP* z2YG^8@>{jcAYk}G`2fhkDD~wIkoxA40L&$09RP9g)rqhT@CVoE1ni@av37s%a}5PU z!uYMr|HlQOCVTPfJKB5rF({DmfH(`#yq+E+=tGE??3YgjpJM%ER_^7vHD%@Z4AZg- z&+#Muo96dYmU0H#N-n&$n6TKlwfE;B0b5_(<0((?xZ8kT z;LShr-pD@BC_!>!B7pmS^%C#@y`rZ1w{Gf?%{{YlUL6z8AvS zBxX|&b-?O+|0^v04xqWJ_753=c>yZ02jlc({+kf_q!OFqFSsOeD|IKa zp`^%`k5KIrF-sUyvTADbylKDdH}RpY{A7?F{^`d+MqHJdluuI$JtO1J+3%mBu3*9Z z4I}z?jcA^+Hu{h_{bg_6P0XKe|8av^jv3ae?*UH6N_}#{XR-JNFs_SGP{nXTLtf-bs^^*qMSzo8YL52ZKb+Qs**I ztXn+RASK=l&A<|G6GM10K0CKIS~6+s0*fq1>CmnTmS;^&3k`BSyRTwt71|9 z`&w`<{LyOWGT=0kfqF866TVJw5lz0MuwO>EupUYBvmCRDzT zS(ccH-!XENH zFmDPEYn+?)CBv461ojrjH^$t2Q|zZ;HNDy1R9K(kF+(MRFP0rOPM!S9F*D(7ItC!T#r45GY}9^1#+MN$ z6}IsJ7$yQ6N)`Q#F|lIqr?S(ge28!IZ{gpAYkXt)WNZ2!ML#pgN2L#E?s1ySz|cRe zkr>}*9?AZ1?~{LEXJ^o*Hv*2OUIeVO52t_S|$Sw5k|)78e?bx_mt%uRl1O0@-w zRtt`F2ty|0^aahH!#45n>QKicRMtT>a%#RBl?xL+y^vi$KJ$Q{uG&fKfXVT8@17=Xc05;O0wm zo+>{QD0iAD$$}1UePnWt1s%JVRpOt_^xs)!bfn&n0F0j8x9F!|Pe{ zJNt4s#CM@`N%w#4EOm&tLdYKU?>aH}fL3e18lte1GP5Kur0@(n_!Y7$XQ`~tsJCV6 zg43D5Z$_0?S^w92dj&M{o5rryrhDFPbRG36eg0-*EBdm^-zeMhM>Y?#WwUP+GDKGz zh0gX^Jq|T{5E|w)H`ib{tSFaLoo*%gIo;abV18<1$oVtV*`fnI-Qp5OMImtGRluyy zb}^`6OwZD;-^0uMZWNi@M(QfS_dlLY0)IsDhBcn)vKd@wEBk4U1{vU^y}(ROa;2?J zi=0dl*qGGXWtF2K5FUGhHtH)n!iI++2m&>CMHN02i(%HvCBdqCSoveTrP?l&f`&Q( zT@I3cmd9%u?f+&(cwY@*md|G;a{^*yK3zXiw{E|ObiN5~YQ9OBE>!$U3GnJ+HoJvU z6GQnUGPnn7xHJg`6N|If3&TU?dJPk`9hG%hbd1gT9)%O9w#4}5l2=7mg{caYG(SF|NJZ9XF-3LY$BjE9va6?VF4mphh#2N)w+R~w_cIwr zqyfnE()d71YfPHF02t>W?x)ONFS#I{lbK>|K(_@O?05quTHCpLfKR@Y-tP5QD z<;E`A%s!ae{_ApcG&heraL5zQ6VuSj8o!F0dtMjO`KiV4QCQ*8!}{ui?7m8WqSusy z&jvq^idwuNMMuE_GEhE=DLnlW+Ii`)LfZ7#&PJg2(+Zpr;bgLW(GpO?e}2x=RPwGS6|;l{9yDE9qkO`` z8{#SL@Z{I5SyZBk=jEw`*|EeLLDBapZ!$!pJwDXtgV0{xR0N0Zt8Gd=N8 z#?*=NtuwXL**c5uS`M3(_NP}6QJ|fpNaYUN{$Z$K)jMW?s+tpB_MsmABSfwwn#JR5 zFchLV!mGB(qu`a-wN=*07Vi|Ahsc>y!y9*JGdD6wJA7LL5Bwj4t{ayu73=3hl%LAL zoosEixupsB>~wo0Vn}VLcSDd#Po8O;mJC7vCXYMCqs!%c#gxWGI7)qEB}1+V%}0{c-$^3ZDUH0h9sO;;c6@I)N*~}Gq|6w=fN<- z={J)hCQv}vm$9+OZFS2t_zhjI%#KUJ>KE1Ylq<$O6OT0*^rQp*oqTv*G`H@SY;9xE z)*YV%XFsJ*Hhmfu_*|dvtJh7x(py*2tTt0mH(qVX&M;eFiRN8}aRs9eIv88cEGsjf zaoy#F)in7>RWNVnkgshrMQbJ9HLkpmMP2QLG81K?8~UB>U{#Tg@*EFv{Oeh#Z?#PO zYXB6m#%<4?vpIMc&tTCL8s~gsRSsC?k5d&tPT#zDVvtGIJV$E+ic5f+y*nh~32mB| zfo^;i9HF|y0_N<1er7f8&?3oss6{W3#cO+Z3f=-lv8>N|r*7T@2(^#a;)&}+T4!eG znp1n=V0yqBs}10+TsZ>FBE10M>ng;Yy|X*(H97=n?D~#3ZXsnNVqkZ4Yx_( zTOc&^%0Nd=IvQ>|U+cc~7sxF?m?^lS^68d{+CNoJGuond?wQc#5PHj4u+lt1_~r~& z)bF;xCCUIf_o35?1iJ`NSY*_MkGN2X+cv%An zxIQ$^MzB&O*d(NM$hQO~Zi$}ka*$d&r;i1Sp?~4cWR}m~@4vzpkR4A&#$Rq4RtNjv z5~X^EFHoLBi@c*L4#{Sj*WkROu^MD!wxcv1VB_{S^Edk^z;(qzhhCg^4x+Cz2ShG1i}pj z`#g3F5eLJuMy*zJ2T2am5dFHwj-8U|lyS&ty0m8p;a*C#Xzg}AnxJ5ZV=98tq3c_8 zq+DN0t9X@evE!TARu~Aj{fW=U zo21Mbja@V^W2zNpa8pQ2Bq2&Gb9cOr7N9r*+PFx+K)<`~ExNd-?~Hql#8_D$sTJH0 z$gN}yey*E#$nG>+eT+EQMl9pf?gm&hi-6DI1tX)Jay zI(V2BA++aTwQr0X1AQ&ApJSrTtb|dfgR@KHB^Kz$2~QqCe37*?ysTv|MGX81MUU5I zcx*$yx}*?jCTnJ9h_q5L6nFjwdK1F$8ic%}a_t#YhW zu&skb>j8DpIX!dY1oYDyFx*M=Yn|@Fr`N}Q*Fz0}*dUJ>m$&&op}@r%@K`d~qjg22 zsjj@8Uqydim`J)Y0r1(3pl2hT+~=LTGBt!NaUzP&iT#2vo&0u%06@z)=jfH7I~2wt zlz$3zt2gPp^AzA;+m9GAg;KZp^^I2)cE4I{?W9TWz?=l5=P4iHGIy0j5 zbrX+8{lQr};=%BGeSuMTr_}t*c|)tN)N(7N(1aRCxy~+npx(1nJKqSA!SEhXI2o<< zr}Ov-ccZ=aI4&WMBT~-^<-F2?9ny>X-rdL>QC2*hv|7PcN8fo17}oli{^_k~^(;}0 zXl205OsfLCL#gGG)Ucj>po69c;j4&z89H(P>;BvCG(9W(qNcbgly}cJ*5bhDXwztT zfQ8!$(J;~2KZy#QeiLlfKZF1u#-HWQORbbfm*KPyF%zsz)+ANU^1LGq^efD;akTf>HI+L z3e}wlEz;A*tm6;ff`OB5Y=h6ft=PLUh$=dd6L#gsUHfe`D`S|`KZR%vK=+IZsQo~W z{^JiAUu?e>Yz^(=vSSoHQcI@9K!<0Lkqy0O9T4+zl9G{-*|h&IDNBY4=NF_Qtox*1 z`~p9l3L6Ipn+nk^_Gczz)?dBwd#}X9xz$^q5X5Q3xvP!wqr$4ekF@R&tK?FIeY$ml zH;IEerHU>ZT27=mp#V~^FiG7)4MmUti`5(gm2ho;4mz|Snz@r z;z(<9ueXj3hD~~vGIcVnAv{HLKyMA$jLUauo8AIR(d9P?{-amnhu;})AG4s7py7w9 z#oouLMK5xQlfwEfL@#V)YSK^cKtp!iFSvBHA{x4aoY9ET<1=m5J~}c`E>~D&H`!qx z)Q8PiHLspjGm%!#jA;B_z}-|u}j`cm7z<5uFxUh`)6)W%KR1dZJ@a+5dnWzw+sV;(yG z)D|5H5&rz^zFzn@v+K1~7ApxCNiE3^#Ii-7Q#l37yrIi8YVhYbYxeh<)$>+2>kl&s zIs%R{)CS8JNPPcs+=#tsZ&W5Nz&=?hsz|ZWRO5je_F(fKtjavMqQrUx_+8Ir2O??7 zggclAgbnB=#lwJue_XKkki(@Z3wcg~Qf*-37?6?1+*aNR-)=3;l>gF4~E;Ei<2&U=*uDL(p1JuL`p4(8hecQIws{G!^+H_eUhOoYBR+S;fmdPR#< zw(UF<-OkOxb~7nTtNEr`Zdu>!G(aXb$GS;wze(VF?NBmHJzw&Y$R~>X!6Wu=R^s#s zD^$1I51(rnL8w)yPe#=Jc1gL8?B%L0U3Ch{dXrx8&l}lx6wRjIczkeaudP#2uk%* z{y;v-Tz3!0SFxZNC}7z**;hSgb{om}ZAn_3$q>ghZUq=&*n8QWk|h-TT@83Q6w-FU zqD^OiZtfiPz!LX#yw8+qGM)Tu^A=*jJB6Vb(j2)w7|1FvW^9#v7X9-lP9`mRsGg_X z))D=^R}TU-6!TgpauuN_Zn*D($iYZA`GXx2#)>C5+T1us?Jr&crm3V50r~OdpaO4` ziHgsBYuBfp=<&scGz{ge_711qVn;^cg5B1N+W67c*Z^~|j`?D3nQKO{^q4=|3%nTL zi`SCOiED$Owuo)>D8}FTxLN#y5F$NXX5Xt?x4boBGZQ^XywS8_^wanm9hIN4Bg3jy z2V|EirV-^CZV#{SPFPOCkI5GRSQMv(PQC*y;`E3otTG8|R z^}r_7Q*Ct0*F;|U#6nsCbMA> zj6ydlS?_YaTq;XSNFn0e#>kHt13{bB^R=$WK0EU_!*kNa&5rF9PfU8|<0zPO^$4(+ z)`an}1dOb2S=qtj_gd;3qKWtbzTYDN0a#+9|aR(|2+g=Gna>}oHYr7nsK#S#ASs(g79te09cUSsW zhD+)-U?gKOF#;)4-WM?y@Koq@=@rslnj*8gtjc^OFR`Ml`OtKu?pbibUiYBqmdpT! zg>L7yfugyU(r9>^YzP`>$9Z=6+T@Oi&A82^RuKwW^rS@Fsz+7FF4`!mo&R#_eUN@|?pWFIq@U8oZ0w z_EPHqR6OzmMw@UA%2OLhVzqs)4b(%<}OG;kbgy=md*m z$o&8y*!nLiR{2oe{Bu+3#TxO)a-k$-!&)R5v&WMf1n-TvC4`Mrvs@#jkZrD-sscZf zaMbS=%2gByd<0h*Dqeu#6@tg=iQl0h^H*X^U!1ryqJgGXHTOxMg~7V1Sh^eUe+CSK zt7rbT;v&|y`;+B?nVJOK5KWUN^Oa(gdnhKHWv5TSS@#3Z3fw{&r^mvYNWQu8K-Ya| z7h47=;#HKtV9n_cg{79BWunuf(YGUD*>?BaT*K%(9f~CKz}k)T9!_Iw*)z`e{v3Zr{M2hwy_D>6QaAj~^t)Y+a6q+| z>ghfc(k`DG@ulEaPY(oouo)N~Cr@mpPxMi!xRxqWz|A@bi-t0JM<)~$b{b~7eV|Q& zbxqdj3w6gK!W&X|WE z=GKHY918HrW(H#vu?kht#&y`4*t&%PMW=X@e)OoCIL65)f8J-ieqGAsiMQCr)g z4Tb9Z;$FZES**rxN1QUv#Q-*^zRZT0JB3eum@TJDfc0s7m2@2Knzx%QbQ2tr_n;Rv zy~UxEzGxJ?$f6^`_R*X7obn!QC3D)A(YR&H7M_IKmvh|8L*rE z7BDGqn>90@aXfqtFn3$732>N*0gl|;mVf5_U_I3~XHR1`;B zq|_B6)`s1-)nvsf)C0S7Pma!M-4QbnFynvWPC~Z%$Ia$a}XJjXKL# zYAoc$U=k;Xvz_!Rw@UenAyS9;6cir|coE{-cB)jX@oVH$i__b;t>DWvONcnyPN0;m z&|@UPqhmhu_;SX2`b%dcaUp7iHscX=i!ML_mj=PS85k#;yjB=-B03v)s?b|lt1F>1 zJg;839f4udb~pi|#b5mzRMElNzzzswEU~IoSa32AwZRWZvel?O z&rIiHjP8{~?ej`{^oi1z6$V(1gl*-(jPZM4i-iq0%14fKb%|Lyr;Qfp1nfH`e9Gwz zy@rawAc;4BY-chd|IF%43c>)k#pC%5J3VKHctdy4Ow~ilWENjM?;UTlUfRWsp z{w#CA>&^h(;?nnx#4+8Y-pZ@)H8HurvW+Z+wXR<I$tyCenq0nxXf{D$@bJ(z8;VC za>8Kb&eMP={1XAq^8nFM(F2%8jW>iqdr~wE;8CzIy z7KzR$L*vTmPY5cYB!Mt!$g6#hbh%hQTJaICHY2mwQDyfeD#!Lr+pNNSh!2JDn)M@B=;nNu-_;?F-9X1b~2ff7JH?uv5pjsizGq<@+@u(NJ>yRv7S`;b`U z7u^*>QPcCucw)RQjaYQ+A16we_F(&x zE~JTPL4do=-ZFD)@>v`FF6z0W>40i(BB0KQnI>s`n8Nh@Z~ohLt2tmZJMV3gZtkbM z63x^_kBvi$)pc*jZ!ZB#+%Ge(4gKaHO;uK-q~`BbCsb5F&#woQ+7E5;ZK|RZG9c$M z16H}^FT+njvuJ7wdlNCOnlw0$*+3rgnFDI@OUN=O3!+~ipv}xRC^QraWUo*Tz46jy za^#1OR1I`UA>EGzoummpVdz&ioXY3}^~y&U7a*9c4}4$ZKaoa+`YAIGj;#1wW4}d7?;b`JCx@GJ=#sIXn&fhHG`>RmxYTa znkYD0&#B7j-h;XA%sqjPWWUUr=rTevCr}}#I8UfpllGbP<0u#nzD$47R^Jb!jJg8y z)#`jFff*u(d6j|RkxScSK9A_}=tBUE1~J4De}V+(gR{Ep^0B_J*jBfm>H|FW={gQ% zm~)29V8$JN%yGN)_+Gz;aFf0lKb^cTFU(+jLv;9fx&ORj3goz6ZA%rN3~Xf79{aeT zNhx=}uvyx`pAXIj_vAj)AnLu!)rSF=qZ=&V%ALd*-T^rnQ+mz7OAscr%FU7r4^1h% zOdZWC3M3k2l3S-kCpVnVwS2gnI`+>6VL+JV9%*8O#s5|Vddh5<$o5PKiFF>4x5PKC zbVprC)6CMpBx0B-jvd5SdWxnf`U}E)763r~tC^TRPkU-!S2%7vYI#iB>vgr;c)##6HxdPWa5E&Be7i&uWO_CoR$T{eB%IaaQh084RC-3e} z8aW4~W2bt3;3V*0!7!N%uSKyD7y z)AG8`srmtyRx~L#noCxq&_K*Ca6c9Gb*f^e#XNAWyr+J&Qs`28moBoN>Q4Y}&aQ+* z9P|T*a&wlXv%(=;KYsq~Nb(`Axn+*{i&jDa7E=PJl4+q&TX=CRT509#DNd?Rhye-NNV?StddOo&R(dj#u)kg zEjg?FRSVhd2vw<)M;!{qIx3Stuz7(+pG`D0AbF?b8jQVR8BwzqsW=b@4S&88n2}pa zNgRgTP$Ca8x3}-c~)-r%+R{U;p5kenQqplrw4Ox*68Ys+iEXy zaes4d*A4@0pBWSFFB!cl7DisTXDt4-Dt3D%-e@OLkKs_^I?@A4jk~M4OCwm6px2uG@rpw&>J2|0B|NK%8xC+0eUUxYEG$V znGA%`%LW8{-n+j~_JxVZHN3WKT!SMI*5gi3k%M>G*Q=TbV$lB}8cEnE}srGD&)Cm|WcZf-2Cu);zEk8}98?qfD5-UkkLN%b$S4h6Bc0d-V9Il__)b`BRk+ z_?*dy2xG2N*mrfK^1+K3C+9b~5n;~3oQJ8v9;R}T4eSfbq+t-&%lEE?e!%zt`X-vI z1nz9cbt8wxi2~_C>cO*-Rj>RPn-^2N%Dm7Q7+wnOgK_LYZEBL(p>^Q5v-Q3B8_?Xw zxJxN(?tPQWZ)({^QFwd3NmzZ{aU_>8Er1F~&zx5L^(?Bu+Y=S)wu-+D?=((}a{s0$ zc?CY)_UNF$DI{^|+T7$RFO8ZEoI($}eB>#bz89l|x{qRfZypm0cV(|hhfEaKAHbG1 zOv=3Bs})Z-sSz2qq$XCa&ndG(FLPZ2w|O@6vq~gP7IFf0Cx}ib{0d^`IInVr@1uo z<+wZ);9EXU2gcvLja3fMs}89-z6#VW@5hfGQE^5*mOgJDKz!n?jJ} z#DPI2L29n9twJK!D-6=F&;(?_ijBT%P@DB?&V)oq09Tr9Qpo2BC~E}LWuTwI^e93| zr|I>d$6^{rAy`0*(N|;$>KqLv^n5!gMcoesY!BhK7tA^V)4YIHMJ(tH{(|iX(UalaBdO%4#+v8Jy)lIGU;Eol)vM0z5Z(D^6x+Y($_ICX?~y|D>8UacgK&`&&Jou`*km> zKPmg;0@dO#7DTriB_>s_mF;kW4q<)5&Dw6=z7wybzR{re>Q_v!H=gW zqnPQ>rQ6QsSZrkjeu$Y(KNsBAXmgwGvL^wJ)UQgGy-z~%21Unbm(g8b9dPVC2osJL zDg4f*2zXR$qY~lc-fk~w-V4XQxJ$iz^+Fq5hcs@fRf(|j_FZzu&Q&&804vAkHCj@u z)55CjautcI_NO-1?of~6VGfvdEc&O%ntUW?j8&?HsF;zu{d~PVIvM609@Ch}XJ`)C(mmAx zkfV%|?U@o7AEa{(Q7zUWZECvThx7tr2^Q?taEP+KABzfFJ|b9uEz&5qBOPs}LRj(r zkjzT92y)6O+B;*k9PjX2DIoLo55wO4o`vX)vG2)3P=$Pw)A^BhKAb)y2C#sL6TW;VJDNKij^!Hkg+fi72a*{KGzq>x^zWdedEoc%e8kW<) z%<+W@se!|1{?FkDn-O3@IPp>1M|ejh9&7N>U-pg#qiJr@wv9gkIz?>96eSM<3J+KH z&Pco#ueMAu3E54ycX%uuKNhfYf<@b@j%g6+yzbt&k%`e{+xVlU-51D3O?n5z#3HMh zzy>2yU+N&azzR}}#P{o7+b6%BvVKQjNE0&^|>NC56C1I(D8@@umwc zO65LWzYe+_@06Os5JHaFE(~MWQ8>zZHbljM0O_ch-W0QU|6i<3QJ*c`&NOdJyYY=% zPG|FdHNr8+^_QUa_>uiP3F#4N6Q`mu$k9z2L^4OeAKL=>1G+zCc$VwISrT(@b6kIF z!BSa_WVff@djvi0qSTQN*`k!s$4BUwfVjp32!qYEDgeo&etFd`QlXn1u|M%uiMRkD z1fo|z>h?JP+wUD1;ZKz$_=_@m;$~uIcE7t{TuU9#=27v2?DV6a?{R&--k&$ zI&m?lN0IYAjbowxo|TG1_9l;n>W^9cs9qM9pq7OfCq5-020#Vf9z3MPh6X923DqOZ z>)^@hU)p|F;06cm{`!uo`c-j}MAy^5(Vlw4Kg!fABSmv|_D3Y2Vy-q(9D<5n0S4|3 z!{y>DZEn6CiD7sxXnVm9MAaY{`}Zx zI{q30c3N+;Ahlm?Q7ZL-6TyUGN~Y9di%lZ)Z6rh%86zZxR|j&$l)pjaZAG2Ba^vq6=>-67aj3@Wy8mPILf^K}UraB2ADAyQ!2@)r~%Ah^#RP$}uLb`&X>A0h3MVKwV#1-R2UEO( z#1w1+Z2Ssknd?C6` z9^Xd`4DUk=65?e#6k1Mhq{nLc-RK>k3$>ou=JX&;h8x#YSf5|km&)gt)gD~d5n2&o z5w*ik1Tvsr!2xi4pAhVVfCH2~C-xnr-7T5F^Fz4y?PkCW7Ynqh6V;XO<*~S4y~`bV zkpnhI>%FbE2}|rFf;2i8f`Hl5!}^X@2;8)D2URMBycj`wWwuyg7(v&~zFiLJRSB@x zhhGR{6blYfDgl0G#q>!s71<(iol%*|4VM-tw776PG~kVvf!X+8(nZoKVBY=SWN#J8 z*uIew?!)Fhgc-W0ay97BS5pPWpaZT)Xn)9~U){MW-frnYa=`puN5QunI~O zL#Uo^^E9;dTuJDgi7`P87`KZFZ{#HbkJjYB&P*D_`M{@Nok8xft|cnwF%n5KdldyOGT$|;>v)}07tGeIli?%f}sbr7*?8#siu$F+(PF}Oaq;BMkB>>65L4I;3AJ7eCNX*3wU$_dL}{KHPR zckYpo9&p0q?e0{v00WG;(<}c2yz5TYch0EEhtDa11u9-p3`ZH~?7TZnxA`a3HTS)b z-Ovxwml#5`E#q(^a19} z6`PjW&XFVE1~tuX>sX7`%s2YHBPgjo z`W_7abXtU8!Nu1L8Jbh({IpxSMU*k05d-qhRh(ZC;Lh9a@PH9GZq_F|(*JMCS5%U7 z`+tXmS{11$ZpT4#N5`GsNpYf?Ti19SAC_U1Q$z1{>P-gdf`Lu^@1*LEFjVFDTq|<2 zBoY(Euc&mCS~MQ(_u&qNn*43JC9byf1`DGE8uu9i<1K8SL%Vj!gLIvTY~W#2z2;f> zl#l4lffg+$RiPTT#ehkj?~28yS~efBq?7c@sjar^fdt8ujKBd)e~c8Aw(8%Ddg3zr z!JWNVQMNr#=%`37d4RLO!c*~&HZ$@I=<5#&Alq06hyim`-LBm0cR}!5&q+-U;DmXK zmGl8}Qd%~&l*0$Fg-72i1)juk-+Dwsdilbarj((=&@W?7^H1;>F-#Y(w^P4+_Y7EU z3Ki+1l*HZOQ3_z*piDluae2`oMhVBKFJHd=drb~FJ+|0Kq%dm4wlic^p`lwHqH@%p zhu!N8-%H$}=rmQxJ&jB^K_r`QPbF^^UUcsi?+1{s? zetE`jt0tz^v9u8plQuV*pT`Y4ZEnX)o&P1f5a82)9$X1|A7Tj@Kg8 zUs^3xtdqLeHQTEoo8<2;jN81coL3GzG51atFs|)OE0movqDZ&;M3(a?__FR!Wqlk= zXhLB1+h<)(P+IQxvqkuq)U@P3<6ouiGJ%<$h`az4je(9%dlK91e+_t0#hYFAc$Yygt{KU3XGs5|MYBzInh88E zTq3b4FkM4I_L3bYkJsbXFTKNuX}$7JtLyXVno4H~bFiPLsVy^~|4fad4x@y#{q1&t z%hDHd5AT)g$)H6i+bKHRXN|b|IACIrq)*?l!Itb)DailczVH`x0c8c_RgUv6@u#oc z4>C@giZMEcCA5Ck_`X&P3Z~of&P};L-AEQ-YGZ6Z5R}gK4iW53QCpK$iHquhf z2pOp6^rKo>u;P}1>X7X#@yo#)ZT>1VUu5- zUBJRDdO|QuuL-qN$>3?TfNkBxJj^YmD|jn7;*&$1O{NSuaZ%pfvldQUl!|;dbZp(A z)B7Z5lgH~p@$8a+(>O<{f5x!-r}xhgD< z+*V8@u8FOBAhm}aZE9pXv$5$`!zcPSr}bh1=^8p{zrN)ks0O37EYM++;-Z+gJ2~N_ z=b>s^-Ms=TP{qZT`)t$?NfXJ&1MXvu%U~`GD=qKhdA{lP$Sh7lMjcxjNROTRq z3<`K2t|k;G+K;JgAE7N@nPl?t2hI%}op{+!%XHoh*Qpl;lNv_K=(iyJ{HGp0{~qAg zsIOe8*{w=BetG6p4lA~Q{ZR=<{dT$2P9u|UY~QM!;p@Fcsf)1zhu7NRNYdZ0&(j<5 z6Q!TFz!xW`Q4`7E3r(6^Sx-ZL96&==!8Ic(Bs75tUNOze)9jSN84d|pyH&#Xs=?Af zq|Yp1(%Ftk6GJj?lg@h9%3uECk7!|?PxCjMOUYvU7iG~V6zL-F(XG54Gzj)Pb={)C zO(b4yL9_qoOR2joNK=}aTzm+EoT_#KdsJF;Y;ffCSFHO35)eL`$cz`IvHmn5%ih4T z&>&zj)Jvd{JO9OGneX&OZLK8Z+VVc3-p~c`(b6GnLJj=aWKU!gBcAR_(P8*0Q=ZK2 zOdP>(w~P;E`>COa<&Y^&|E%<#$Z6tDzohkQIZa_OM3uWI8>)-J_$qRb!;8QgShHI0 z{P&$uckz7TZp zi?}&n9l67q+V2g^@a-d~?!Wd7h~upH(HC12GYhF3ATeV4RD{?O*J^o@|quE)E0=T&W)}9c=8q zKz0c1q~*QlfQ^uicg}IZ0`A`Zc=_K0rS763h5hTbIJeMD8h7d~M}>5e~(da>=<$nUJU|cu=SJAynay(El~y z|95l@q(kNYL;?S~3xof9qbaSAKo{s7_aavIm|**{B6I%zf6++)zE3u(tF<+8jkQ%jq9Wy4`+yIgu=* z!4)ojYJf^iyC}_YnKJ0^y>FiDjR zc`}9U^b>pvsZx=`4Mmyaj*|~^T(hLkBf*?_3V98`4d!<@XGH75m=Ks{&{Mnq@5ck4 zLb5EIqj`_#tPEpLN<|jWss6PrQjiogmA=b;Q5%N3rIbVQAD==(mUXkM8V~Im0}`S= zU>T?%v+=p_Kh9s>@T!JazTGMdqL@)U@yeC!*Za8+Zz4dSHCY=sHEeVx;VPzZ$GsQz z)F1TFq+F-D&Q5V$0aXdrt7Rs=Wzs z)|JW~fnXUgeglGxO`&9lxWi}7Oa+S!|Gj4waD7`sfpfrLgmB_%O>}wZI;i=}foZ!9yX@mY4y&{Em`I*PzroY@y|Rj z^oKA0?*V+CwrCJOFQ@JyC&^!1z!HgOIikrmuaCb z1$zJE0!YWs+orB?aeJpIsm=Y>%R+!F#RM)y4)_dB0~Yxv&s0lT<=!+A1F zU6=9rQw|lhO62BJxzU$ClS^J_r>b@C;`W0|CAE!zr(F|TLi7kSov&Y=a_Tm|HYb(O ztGRk!jnQr~V^Z%+Pyg4iu*KrY1dcQk-R1*tk(~R!cP*jln$+yO*ls?*%0j8FN_gEn zrM#<^&c?m|HWMB9Ry&29)7RN|75--@{;DlIi?|3a^l}U>it_tmOTe2R+8Cl_PM^<` z`TP{$L{mU9X9^zrNo93!z|ahx_LBhJ-f_a(q^B>A4b(=l!K(VVYADN6xc$AicVz!8 zL#C3!_Tq=Q6&qzRZvB}43=DPteSfjnNaH7p5tkr;=IF85+qLZ&!56_`tDTj z7OzxYQmHo%4u_#++PsG6ZMk#XBK!Cb)ee8}56Uuj4F$8;1|(*kn=z}&Ng%pce%h?q zrZ1Xm9S3*J6j|)~=ur@qw_n!lvqS{lB+mEyUX2SF9F*of4i}p-f-LyIsaB*v{9r+^Ewba==0bN~!;xni{qHgU zYwz!re977TM_RvFim5Fuvs$txN#@7b(eH8pKg!-a9P9V*AD1XIGb1~tWECQtWJE?u zHkFlm+1rI=WJ}0ak;>kg7nxa??0w11-uuGud~xZ%Klgpy-{biG@ji~;yu4oL`J9jE zIM3%9VGER*hhHPhiVFDZ`i8>$v8Qy`2X6&WFD}asf8Fh^a@_jBXBy_}bo_@txMi?n zEa4WIOIgReRAxG&uBf*^$kD2Cu*kQl(X~G@w!Ro$W%X^bZJ*dZ^6|LtvQ~8 zPu@q3-Y2bzgVh~7`*(*mZoJv$x|^l-4dem{ob(A!O})3ID&Aka4!5=|b}Fj=ZTBF1 zG9~5{Ag<4ni_}Znp~oWiz>YunXdAXV*-V7d=6v#I!8M&+W4_3e>@<+CNDh3O1#bO4 z(ZK`P+>blW#t3*%b+|f~T+6!SPU*{;r>=j#_&6Oa<6BS*b3avB_-Ocuf1y8a>0qPU zaf&3Wx)9~PTm0CDj1{O=Na|ONAM%zwBFo!e?TteLvlipffe6Rq^T)!$mdBc-t4X~x z^%W-q@px?&Bo86<5}}6k`X>Aae6@tucaG0wF#kuIDal5;K}zz($fO1ze5HC>*6iST z|KTB@&fwN4^(_y%5E>S6bD*QdyI~ZKsmV+^lMDWHixrf3?C4BcR$=t?!eT2IJlixr z8l;?@T_@h&$oiC57#&A%F|*RBlwh@Oq zdDe3=p31Dc{xdcx98qk z^(pnRd@7m8uY2kUnl;)XUCBJz@PTs0Nlr?jMVjkO7fA!fJ>kT#}jt7{R#hlNyME zFhjE8+Q+Da-$Q;K!FJKa(y!2y_c;I1DQ%a>zHn+Cd9~iJ*YD;iYBl0mj4a-mZH|{A z%v!$R5n15PwMX}4(2?T7T&9{Nx*U5hN(U-G)!xP^1ZlJQxir|eVGSPigKG*PYyn0X z*AHYzq~20azB%RLHRbA>{#M#NL_K(uTPRZ6xiz%Xuh%rFpF4VA zqjlt9->vtzo7=0=-jueW54ejlKZd@5sD_L$eygldiImsVvCR#%*WTM*QmM~HUH$3u zZ$$)PMbGj!ommBU|*NJ(I9pc|vIX&?$pIWiHZ==az%O~O& zg(2lVg`m!$_u_jw%m0fD%9qwtFU9<_GZF*D_=cx#|yb^B6%^Kue}tm=#i9_uGL6bhy-~-W`}l4j;F= z06!(q#qp0_rLLKIc2If(PqM}fgyv8_M}g#AjJq<4hMONoXZ<8g07CB8(0ZWr&h^!> zQ`ccp_Y^`rk^c3P&%yG0MYrvHTF*+}Z7z6~xvs=i$2f>-2~~5H8ucC}YL!N&6@Y_w zVzbFrzrtF%(v#vU4ZNy!8$*shi#^WRReyM9k``x|3Hbf(ZjF+Y+y6sy`3dojWL&0qD;+j-8nLGVzrgY@rSsZfDicSm9z355^1P&W`I zZ*&u!9e{Q=b-~9n(4chFQBgZMivT4zR8nef+!*ue_MU|VKX*`Y@RH6fW9hFJ^-Q%= zba4yoLxY7fog?k(Iht6Jg`Kcrub0)ysulr%VL)o#c0$3k!y*?`N%(JZ5ZqPR=A3&59FJC+mNX=HL%+#P&y z&=8q$2DF=b&*ffE9_$xvmHM*ya_VIzX3|I4bjt|N59dvL&V=T@0(197 zf6~$dWf8-Cf2`NmoW}fz;@2$(Vl%K|^JJdNactTRq*r|Zen27WX^_E^4xiW7t36*v z$g$5ja(Z1G;*P0Kdg%&o*zU?Tz?UmAq?2ulb?3u7+~*x3E7Y{2YM4I zm4RsqOth=tB4--;ilrF7VX+apOg(}?M8=uZ=bKE$N1sQ_aZYF$uhjV>qpKMfhWQSA zgRf&BlE6HzW6O9F4=(5+3!?XecZ;u%=kiVT8>~I&KO=^bw|DHOu>p$6d-gK)vo6rb zmB5zgu%HNn83TVmDGY3Va=(UWqO@o_Nio5)0Cb_Xed9IWoSd;(c7vIlm+|MH(m(;UPbDa)v>${^>YoDz7WE%- zoF~+rqV;(cd}enZwR9K<9p-sYSA=A|HZTCzYJnrI<7g6 z;Q}TypH&QxK*f9uW=TVP`XI9wU?utMx6OS-L-wUW)rr_{lSTxyRAE3mkr=lyMiS3?!L>}o zTh6~U#p2{_ZSx)3pl1tpCbn1oq1;7oLxS z+n<00$E-elP$GLHVYmB1CAct{+} zsVG5PdbmgtnLW4PbB&j(9#;NI3Xu<*!5iKgDF)Jm!Mu+~B&#oe7^ zJV-uGj5RX=zKy)S&c_bAMN1uIdw{e+8^(bO*k2=Ck+!U$-QO7`{wIHaJrghacUT7p zZ1@o~&_1vsm*$cO&VWV;-_4XS9O|8F6YiZ#F|Y)a7)h>;y&&QOiB6zDBoSULJ~i|bm&L#!vZ;88g1t(*8f#;QTV zFWHk(#OZz*gV^%kBf=;$MC6!jj|<9nvMNp#5HGF00>igBsP~K$HWotbbX1dGO@8uGSK+m=@u5@M){-mxoW+dS&U>o6x7@dTm#5o$Ku7uE#^%sD2EgMY`II^jGs z)N4YLlB2^l8ej4rc+hLVS(Q%2rv`~rzy%LLrxuHL=9fL?H?r1}M$i1rcQ_C)d%0-I z&dsfCE?gWc29G5w8z>Cl>9>v&Y2sS-pvop)3*HUg-WxxIOU*!mq{8%%LZR<}fRq`W z-N6_J3@iYHSN~}>FqTDjaAL%UFxP0t(eBYqIFmn>9|Y!avf!ycQ8Yu`|9#QLuDSSFkls#?ITZK=iRyOCXz@24Ydyb4g1sEf>}m1+0i7}ZVj1|+*r&YpSD??Q9#(|Bh{Ws# zgD}@&i_m`Q|F8W@k~ZY-53GcWS?@52y-40+65>7xXNXz}-QZ@W*r_-#XB5EVSju$I zGTE6y_-aLHf#=2WmUEN)1HUKlbgju18*B?{ESnEsv%HO>wHG}`s{L&Fe3=>W`nNcf z=vf{*4tR*>->ryzNT}@plh^XEA;1OBz=Eo;=#JIct+!*ZP7@jM8{?*H?h8{$GpNo+Uk4=fZyr8m7{lmEa?=`p2>?c-u zH_1Dt0oLDd+S-`yei(N9+nRc&_T%dE&l*oWA6Se`s6o8Hf#jkN*`PZ~*RN05xyW-h-nWe;>keLg0C)^HbDo2fbm3ys(Akz}wvB znu^*zU+K5eZ}OM72d3%jTC!gk;Nq@-=A+XtWtpwW@VY)JA+l#&7!hDrK4>E`A*l3f zjtb)%9fA5}1$dvU2dIMXViwUe8MFzhKrSXfAj!-JxlGVb0+D9d4=|}BauqvL+9nfQNohDasTr9e0Al=*~B}naJ4t@&Sbb6z=$n9 zc^XwpK)jna1-qa(LT0z}%ITJ{d^SO(^Cf_z>O`tIphi&yucDD|e`TpWRo2iu`R=b) zZi%C+ml(xZ=$uz#SDcuLwEBe1>qI>RciX#b_^eLpP6*y!iD%#Oh#b&e^?xA6|3!DU zS8IW&g6S6d;qHazW0B9*XzL+rJ8*kMpl{+)RI*(od-T$*&L#TD%OZ$a1LfoU0#?Ho zvG$LFBWS&G4#SNKh#Pdnx{0)a8;}1NH!x)a%8CFT?s?YFZp3*jWhc(UX9TqUw?7gE ziFLo})`uA;j?*pAGJZw3FFcI?`EL3H&n{~438l<9+*ZZl+lwMcCJC2GLoI}Hc*VUH z&<^@vk?+)Pz^zLc1utg!17TJDU&0EN;c5+23f*6UCNxkO3jc@GsK6hZOlZaL9!?)H5TSZAu7 zhXZE3mm z!$PK^X^>6!V}`2~j1yoa0g7PCsD9HYlT7rN)&fZo;3onN{iobEf~fORP6v|H+N;1# z9Q-UGE|@;3tHr+ZqG*K&b#2&bF?{uDnnE(u*}>%o3Oh zjxDASmxX#zC76IE-?SQQsh$PB*0QJT@>cuz;UZRhF_Bz-gXslZTLAY zvB05D*y{JlDkHLLxG%D5!DArX@%-Mw<)tKIa zrAUyjOR(Q~dA|%WVgdC5s3jep?7yPme^*OyGJw?>tQRc~C=9)Hawik1Gg_0YE>oko^H20g}w6 zc%V-!tnB+|B1_l!8$C0~M=_t}e)?sYPSfA?K(BAx875qK!8d2gIb1oYSv}}E(v=+@ zvgqVrp()#;$Hn7W`4gN|8M@iLEB5v^$BA|FmQ*HxUN)OZWTC7SWNF|PK(V&4vU^+j z^q2qeD(Ov7XlPhj=y#3|rt2l3o6e_b=vw@S|6;mK_x9Aq?CDZH9e<^@?`y$EzvsDL zOz-T7>%jYR%ry6sx~t#sQ0Er5T0G6=+_HFDurgWoqr%>P&#QgjO`u|?N~Qp*874gV z`PI(3!3v(k!BHbL8y!1z5ECK=TFE=hz^f_X_gjE74%vZ=5D^an_imgB@IUCMzyfMa zB5N^>cFIfNUwj_%7!PzfYJH!#uFL(`)roZvb!1id#bswR*9dKDQP+}kdwZva$0o#w%HS*rERvI2Gy;2>bcrv^<7_I*nRx_s|g7qt+b zi*fBBntgzJy{q(|e(B6bovo>c8j2-m4~t6qzv{AtG|Ud~v>NBO6L27>U(XPmw`3j9 zQwcOk&~)vXNgtJm_vb9!s=5+js%U^N6pVFf}%S9=c<^yp;aNuVBYU} z)JO%E=IESS#t}$-XjLu#SOzZwZFayZ_w4n;HNw#ba(12l5kyDCXk*u}Z})P95pn3b zcZH%A3hB?cJ*2LHu)xe)Ar`|1Ch~iCj>*{d?{x&Q8p`h}cwbNUC3CHZ-JYnwc@~_X z5r-KYDy!M~85=Jl_g%vllhk#l#0`%JJVdI0WaReTG~hNGii~-x?_$a%l>KBcqTH=} zaqc1H0Q1%#5a?Hy6mG)Y%r(390>TxBB~&6`8uH9AGk}b(OmIHrsKIyMv3jGG!kDtv zD!G6r8S*ma~UnT z91rrL*v{Ss*Tp(yU2-u%6=P)uhMHvt1SNFt6wa=2^PhFJ&KrJRdqr1RmYkWy*=CQ- z?BumT4@eeYLHg*gF846{DEnmmY>T^=+K4ZdF~rE6lH>}cai}xeq7(N??IHQ+iAALf zBNqa2vy)q;W}nsAG~96rl&Q?56`L^BH6VXJXlmep-RnYc>f85o4os~g7jI4kqOfp- zKVo*wOv-dFx*Do&cD-s1{LQk1DfzGB8>ylDGS!r*(7RVv0ug-M;hwe9oXN02)K1Rw z)L(&FT&BmfEbcivn+!ABc> zYQOg@r)tvF9@Ios_I(_z0+Xf}4KLeXq5)2-2D{PbOi}~Gy>-wf)?JUlB_rbgJy3VV zxHI-3CF1;0GB?krP!q*(t|*DvZ><7v#9AHK+|TTNd&P>###AP(ba>h-A?4O_`IkaZ zn4aj?pf;`8A;*HiRLHIj+TVlu$5~1GR9f!?CoFAa^DoDrLuSLX6SCW0jK{|WS>dbT z%NTR|&6H*z?V00I^+Il-P?s9Ppxqa>rs0T}uoHfRE85J!vZ(cdt_v+gVg~Oo;+d{$ zSXgxHAOvwh|DNmk8LU0k0z8nKBA%{gI0?(ZSA^tK$5vmk6uvB*C8a+h9iAwpsQtMs zx2OfbPybpCk?^`1aEX!FJ!WB|^tV~BaYy@T-OOR<4UVZTq0FWA;qubR03JL8^8Iz^ z+19SRsKKp7Y7kB5Zfw-tJ^c)GEM8Vhl~%k%Zi=GXOKuRVP=U=CVkK#u$#H}h_VRQx zI3zfY9EKz+EkRPCVWptrpoRT%i=UD$$dhzU?|lQKkVuu#@N(l)5ACAXLcQ;VUT({C zPs;KhX_jIHn&ug!h17J*Wupca_W&rj<55gvEQ%#7#AbS*J%ofZ zoO&a8tM;5$q{>zs=3Y$C-FhC5a)?Yfz&O=yJdb?|MWb56)-SlkA~b!aA13U;?Mh@G$;5p;}l$nBh8$? zKcXKPw13Vzn-dc&uK#BbXmhTzTO&wU#@xLX(B}0Uq$PTf;g+%OWuHs=ziZc4_Xj)5 zZd>l$94rhph;h5LS97Kvc=yhgZWe#B-x?U>Jg}@C2cW241_b5Q+_x}zftmCvHs=m~ zPxBpXh!yD+%`v-GC5HC2o@;T*=PQ?e8`kH7t|CqMnBh(O{p#Fi^yNEieZF#OlPMV= z9<|WK{a6SI8R^80krCHL==oQQA)^wgu7cbLnFPHk#)sjAV08&TKWF%Z6c3_rA<7Z=iIYyg0Glz&9}H~ zIInxe5Gsl-)H5=4D#JaV{XMEG53%q5O)*u!_EIR_%~;Dx2YLGfl3S1Gm~VPYyk?mI z(ys%)TBtV(!iRyNpFt|*ilM*cZJ=1bWH)3%i`6NI-r-cnxHF#O>s!B)%}%}DAX^02 z+ClAjaN6j%-k)E*ng>!!db^|2cHeyOSY>76g&!aM>|2+Qjd>9zv9M=W06S(e>-}2t zsG?eNVB-Z}Y^wxS4n9XI0VyKTV4<*v_7s=_9>}9oWy5TxnQ1`$Q5#6{8PlHx-Gv0q zDlX|91n|8{@QtK_ygz$bU4BTea%H1rF~$P5TfY%UHRHQml{GrI?y+M3lLkE=8g6_T zBi1#!=)W#|?DPVe>k5nH)GWT9HF8T5q>HkV*e7Q*fFy$IpQkU)-9{px=b-j;fkQt8 zlg7aUX^0<%aIIw_{15z)gpRXf50WBcOD%38x5S5|e%hzNBAUd}Bd1@tf^nK2RyW!8 zX@nYF3w{QRObD?Ye=Pef@8B>0HtXQ}sJL^!XE?CvLrfP=6W<`W!MfT}^Xo~Gi%#=b zx}sbT>Jj&3{yBY#v_v|H3vWRX%BB$Jbf!}{?-DQb6OoE#Uu5R?{e<^QGG5RR~nGw zH7IYm*=2`%JQTOINC zzE5~Ta;z3XGND1M=VrpHm1kRFIa)12)DYb76mz5`-LN-vUM_7|u{&KcxO=L+@Jh>c zzlp)4Ws;@NS9ZJf{E2#~U19xNuFCh~g}-ZFJ>~R`t+|3QLA~UpiQZeml*l zS6_=TTRZR-AfC!@9d_Y9{1Di zUeH!}^fl@Q8YIa6YVbecv5&SnE5~>n0MR+TLfeSzGXfQEMhAHL&Iodqv~xQ7Zuic| z@VqzdKUQI{>!ZOEk7&8fCD~QJ-tym)R{(Jy{=f z4Gu3myp^V4eM96xK6HIr^lj4CPlv(MmDE|j%-bpTFi>NAf^fPkG(3=5DqW>Eg*`b^ zqU?w?F5nXH0M*WipQo;@(RI8bKi!dc%84hQ3Ek5TqJk09KJ(pn^b_-xj({xfStk^x z+KEZP0Wsi}V~(0AHEeZTM`jAUC|fVbjPm{sRS``QBD7bB+W6#0ht#LCx|Jh0h--(- zj@Y|CS`&X8&!;Ykk}I;Phus4wn(t94oY*RGkcuU>YbV7w!=L!#9G(9gY+%2XfVD8g zRxCZ^`ibcRsv1Fy9Y=|nw60baPI*>m|575QSa(c6uW=);@OFPaEJ<74cr$%g;fD0? zGuuVvLZbbr{y>zC9r%y!J?0%~$?@)Et*eCknp6UmX)qdcP(tzH2O9Z>j9c%_d7N!k zav$GF0iE2x_;hclri1K8&o(Hj+4t{|rRb1=10Wf(Sy39)*@fS~Y>93)GRY?e`Mp>f zfdBnkC32xExAX|!+{L9c$K2DM0NY`F zPiTg$XNZBu|c+u76gz#q7#f8zjHx;0SWH8yc%eL48P!a%08bg(!ipW+)Eec5~3qk zpMaiku#zz^94ri#n_<|uJeV-Yk6#Y}&4!D@r3#x}8_AGUZ-u3Jx}I*Wj1zomd3o^baoJJTUGErR9T zpVN{mb3_x))uq`?`5eY!9SD3jIeZWXLd69VvzC#wRcF$+`}))#+k)fo&HKbGKTjHA zjwzbo?0O#V=h)eP)=s|7FI`fY-?Q?YwMjIkg3$gkI@yrZSL{v;?*NtW*1@G;Ma09# zjin++9fCU35w+aOtO*mPJ7wT9zv@{(;@I@$x(L;?{kvjE#yIsIdhq<%5lw@2cwv8F z#zBJvc zSp9Z){&a8b&CBv+Gh29W&} zgh1B3p|kj&RHXj@LZ}&hP!4jPsU(A-=`DOP-CEy0IZ88!3MIy4hj_$L5X`GuH^0W!$) z96pbN43gxd-0n_Aw+<_!`o-T(HYwMO2|`yoEnbK;a>P^;m)yQpy6k@svr}sAUgQo> zycv`0v>2Naa=qHrqwF^~vIloUP%X`sI0s@qB(&`oo?5z1Oc@!7ng{GaBAgV~>SB z$2#7zZ-ogl_VwkFC%cH?2OZU@w2Mj?N#&tJqLd9krhfeXKC^ZV3^;mYfc(-oYrxH< z;OIEig9<020eXCDmc*}~-Lw%w7P&?D+V=#y{wtMT0WhT-FE-~S;9-X0KWJTFasYRi zFU2mc#}HG1TIFjfAj@*Oqy1kN>|djnVC0s?=kXKh&jViMNlSGhnhnSRzfbx}5rVW? z5jwYd8BbAUcDm{HLuuwtfCzjpG5KPOppwiCIN&adi|YH3Z;KEIf4iBVZh8z|g~Y=a zf_D;syng7-iF)1``WQ&jZ}6GV8-GsA&tSi<3Lt4JN-Ww99rA&?Q=9Yd{KWweQQ*j7 z&>m>g1H0<2I9MOy$V8u3HseV|?x zhg}-c6T%wBVQE!sUBb!*`{+^zr5~sI$}@xElS=MlGlb*1^_hKU)iDJX;I#P+S0y{Z8)qzE#eIN|gI}Z!!Z0eGl)1H(Qc@Ib#11NBncn~P0P`zS`HScD)@lDF zTq@Xv0zhU*K*eu{4^@r;x3|2&k))GF?FQF~oWG&?d%`N&cOJt;(UixKH35+%=wg8) zNkC?dzXH|_{1d25zih1xBdCqeNJYe5J^6Lo8*h`nBm32-$m)UCQ>!d_33@`3G!E$b ze}93G2Xs@+?B7|`2xtnVwl_Hi(raXaC0T{r4`N^*qTh%Cxr4!$G}m4hoss*@kd1>1 zrQ^9j0vUj3_QI8qPHO@0uC2};b4KFwaBeL6aT=&_QUZ+;f^JEivZCGseF9RF>FP@W-)&G z$mjSC^V@^FY3&K5J5SUb7LHOoQH$t(FCe^SWJx1-ejh&O^9!Habpn4YMN374JboinfN7W!Bq>(#aEZ~ z#yW?MgGb7I@{dDyW^nq(b7k4Wr{gus!>qMSpgrM8cdnlsd06Wb`+xv?PLctC3bEt3 zc>s=JIr3}9-}jbG!NY?eyctwHd(X)WQ=ehKMrr^0Udo6oObAzV&mFY4bJz?(MQ_Tj z>b!l&3q90{!p24&F`iqwA(^U=i-Xt_<{gsxk0o8k$AfdceDakUTMrlUEujkED?G8# zKq}3_7g~7G%}(|4g#AUHJC|*zw%%g-D1etlE3nI*zJtH2Mh8}PnUJeUm9u2v<=xT` z5?=5TkB#;_M$Hj4Vr~xG)nJSmTZ{pGkLI4u^LEq+_8$vKp%`jrnzhWl!!r?-=ysWnTpufQ*Z+`n`{_8ZB$M? zrF0C

  • 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 literal 0 HcmV?d00001 diff --git "a/projects/Team-7-DeDrops/contract/XMind/\346\210\252\345\261\2172021-07-31 01.30.39.png" "b/projects/Team-7-DeDrops/contract/XMind/\346\210\252\345\261\2172021-07-31 01.30.39.png" new file mode 100644 index 0000000000000000000000000000000000000000..b4da096d34885ce4b86acea0c210202c779a245b GIT binary patch literal 154918 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 z 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 w(T^zxA3WmXX8}H+z~>YAd;6`G(}Cb40C0@7 z8`eHc0E;DnHL(pu2Btv;232#!(4ZqF?5(|*vtC=^8@Scn;bvGn1;N`f(AzOK f){Z~DDC&x>ab6SKK&K<`bRd5QOcxpzc((!%34j%- literal 0 HcmV?d00001 diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json new file mode 100644 index 0000000..33254f2 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/access/Ownable.sol/Ownable.json @@ -0,0 +1,63 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Ownable", + "sourceName": "@openzeppelin/contracts/access/Ownable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.json new file mode 100644 index 0000000..1a87660 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/ERC165.sol/ERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC165", + "sourceName": "@openzeppelin/contracts/introspection/ERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.json new file mode 100644 index 0000000..2238fa5 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/introspection/IERC165.sol/IERC165.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC165", + "sourceName": "@openzeppelin/contracts/introspection/IERC165.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json new file mode 100644 index 0000000..a5608c6 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/math/SafeMath.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "@openzeppelin/contracts/math/SafeMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ffc8f4d4c2f48872925ce7b3006f0cb92e2bfdd6acb94c8e499a6ea28546a85264736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ffc8f4d4c2f48872925ce7b3006f0cb92e2bfdd6acb94c8e499a6ea28546a85264736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json new file mode 100644 index 0000000..5c52432 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155.sol/ERC1155.json @@ -0,0 +1,334 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1155", + "sourceName": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "uri_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b506040516200182e3803806200182e833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000271565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021857805160ff191683800117855562000248565b8280016001018555821562000248579182015b82811115620002485782518255916020019190600101906200022b565b50620002569291506200025a565b5090565b5b808211156200025657600081556001016200025b565b6115ad80620002816000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.json new file mode 100644 index 0000000..a851bf7 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol/ERC1155Receiver.json @@ -0,0 +1,108 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC1155Receiver", + "sourceName": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json new file mode 100644 index 0000000..ab05ae0 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155.sol/IERC1155.json @@ -0,0 +1,304 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155", + "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.json new file mode 100644 index 0000000..2ef7404 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol/IERC1155MetadataURI.json @@ -0,0 +1,323 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155MetadataURI", + "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json new file mode 100644 index 0000000..55daf1e --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol/IERC1155Receiver.json @@ -0,0 +1,108 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC1155Receiver", + "sourceName": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json new file mode 100644 index 0000000..663a02d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json @@ -0,0 +1,194 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json new file mode 100644 index 0000000..3ba652f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/ERC721.sol/ERC721.json @@ -0,0 +1,426 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "ERC721", + "sourceName": "@openzeppelin/contracts/token/ERC721/ERC721.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060405162001ce138038062001ce1833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200033e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000315565b8280016001018555821562000315579182015b8281111562000315578251825591602001919060010190620002f8565b506200032392915062000327565b5090565b5b8082111562000323576000815560010162000328565b611993806200034e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122089341c260a9643a1a12b051272c90a60af9c8caa6742e55036b08114d6b86f9564736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122089341c260a9643a1a12b051272c90a60af9c8caa6742e55036b08114d6b86f9564736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json new file mode 100644 index 0000000..3f0fc3a --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json @@ -0,0 +1,296 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json new file mode 100644 index 0000000..9edb6f2 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol/IERC721Enumerable.json @@ -0,0 +1,352 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Enumerable", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.json new file mode 100644 index 0000000..03f072a --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol/IERC721Metadata.json @@ -0,0 +1,341 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Metadata", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json new file mode 100644 index 0000000..df7285f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json new file mode 100644 index 0000000..e91c7b0 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol/IERC721Receiver.json @@ -0,0 +1,45 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC721Receiver", + "sourceName": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json new file mode 100644 index 0000000..cbbf7cd --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Address.sol/Address.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Address", + "sourceName": "@openzeppelin/contracts/utils/Address.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ccfd6fd57b84258d9d7208fb0633d819ed9b25da91dfd0a18e11c3cdeae554c64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ccfd6fd57b84258d9d7208fb0633d819ed9b25da91dfd0a18e11c3cdeae554c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json new file mode 100644 index 0000000..8fe86fc --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Context.sol/Context.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Context", + "sourceName": "@openzeppelin/contracts/utils/Context.sol", + "abi": [], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.json new file mode 100644 index 0000000..6370ea2 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableMap.sol/EnumerableMap.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EnumerableMap", + "sourceName": "@openzeppelin/contracts/utils/EnumerableMap.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.json new file mode 100644 index 0000000..2f53e31 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/EnumerableSet.sol/EnumerableSet.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "EnumerableSet", + "sourceName": "@openzeppelin/contracts/utils/EnumerableSet.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json new file mode 100644 index 0000000..9148b71 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json new file mode 100644 index 0000000..54129fb --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/@openzeppelin/contracts/utils/Strings.sol/Strings.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Strings", + "sourceName": "@openzeppelin/contracts/utils/Strings.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972e422ae8e5233065d4c58221b58fadf7de31737830c58d58d114673b5d7f8c64736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972e422ae8e5233065d4c58221b58fadf7de31737830c58d58d114673b5d7f8c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/build-info/0dd04f69c7ba76001cb35213866bc8f5.json b/projects/Team-7-DeDrops/contract/artifacts/build-info/0dd04f69c7ba76001cb35213866bc8f5.json new file mode 100644 index 0000000..e9cd992 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/build-info/0dd04f69c7ba76001cb35213866bc8f5.json @@ -0,0 +1,85642 @@ +{ + "id": "0dd04f69c7ba76001cb35213866bc8f5", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.12", + "solcLongVersion": "0.6.12+commit.27d51765", + "input": { + "language": "Solidity", + "sources": { + "contracts/Bank1155.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n\nimport '@openzeppelin/contracts/token/ERC1155/IERC1155.sol';\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol';\n\n\ncontract Bank1155 is ERC1155Receiver {\n\n bytes32 public DOMAIN_SEPARATOR;\n bytes32 public CLAIM_TYPEHASH;\n bytes32 public PASSWORD_TYPEHASH;\n mapping(bytes32 => bool) public nonces;\n mapping(address => mapping(uint => mapping(address => uint))) public tokenUserBalance;\n\n event Deposit(address indexed token, uint indexed id, address indexed to, uint value);\n event Withdraw(address indexed token, uint indexed id, address indexed to, uint value);\n event Claim(address indexed token, uint indexed id, address indexed from, address to);\n event Password(address indexed token, uint indexed id, address indexed from, address to);\n\n\n constructor() public {\n uint chainId;\n assembly {\n chainId := chainid()\n }\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n keccak256(bytes('Bank1155')),\n keccak256(bytes('1')),\n chainId,\n address(this)\n )\n );\n\n CLAIM_TYPEHASH = keccak256('Claim(address token,uint256 id,address owner,address spender,uint256 nonce,uint256 deadline)');\n PASSWORD_TYPEHASH = keccak256('Password(address token,address owner,string psw,uint256 nonce,uint256 deadline)');\n }\n\n\n function deposit(address token, uint id, address owner, uint value) public {\n IERC1155(token).safeTransferFrom(msg.sender, address(this), id, value, '');\n tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] + value;\n\n emit Deposit(token, id, owner, value);\n }\n\n\n function withdraw(address token, uint id, address spender, uint value) public {\n require(tokenUserBalance[token][id][msg.sender] >= value, 'Bank1155::withdraw: oh no');\n tokenUserBalance[token][id][msg.sender] = tokenUserBalance[token][id][msg.sender] - value;\n IERC1155(token).safeTransferFrom(address(this), spender, id, value, '');\n\n emit Withdraw(token, id, spender, value);\n }\n\n\n /**\n @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external override returns(bytes4) {\n address owner = (data.length == 0) ? from : bytesToAddress(data);\n tokenUserBalance[msg.sender][id][owner] = tokenUserBalance[msg.sender][id][owner] + value;\n emit Deposit(msg.sender, id, owner, value);\n \n return this.onERC1155Received.selector;\n }\n\n\n /**\n @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated. To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data) external override returns(bytes4) {\n address owner = (data.length == 0) ? from : bytesToAddress(data);\n for (uint i = 0; i < ids.length; i++) {\n uint id = ids[i];\n uint value = values[i];\n tokenUserBalance[msg.sender][id][owner] = tokenUserBalance[msg.sender][id][owner] + value;\n emit Deposit(msg.sender, id, owner, value);\n }\n return this.onERC1155BatchReceived.selector;\n }\n\n\n function claim(address token, uint id, address owner, address spender, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n require(deadline >= block.timestamp, 'Bank1155::claim: expired deadline');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(CLAIM_TYPEHASH, token, id, owner, spender, deadline))\n )\n );\n require(!nonces[digest], 'Bank1155::claim: expired digest');\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank1155::claim: invalid signature');\n\n require(tokenUserBalance[token][id][owner] >= 1, 'Bank1155::claim: oh no');\n tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] - 1;\n IERC1155(token).safeTransferFrom(address(this), spender, id, 1, '');\n\n emit Claim(token, id, owner, spender);\n }\n\n\n function password(address token, uint id, address owner, string memory psw, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n require(deadline >= block.timestamp, 'Bank1155::password: expired deadline');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PASSWORD_TYPEHASH, token, id, owner, psw, deadline))\n )\n );\n require(!nonces[digest], 'Bank1155::password: expired digest');\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank1155::password: invalid signature');\n\n require(tokenUserBalance[token][id][owner] >= 1, 'Bank1155::claim: oh no');\n tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] - 1;\n IERC1155(token).safeTransferFrom(address(this), msg.sender, id, 1, '');\n\n emit Password(token, id, owner, msg.sender);\n }\n\n \n function bytesToAddress(bytes memory bys) internal pure returns (address addr) {\n assembly {\n addr := mload(add(bys,20))\n }\n }\n}" + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC1155 compliant contract, as defined in the\n * https://eips.ethereum.org/EIPS/eip-1155[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155 is IERC165 {\n /**\n * @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`.\n */\n event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value);\n\n /**\n * @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n * transfers.\n */\n event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values);\n\n /**\n * @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n * `approved`.\n */\n event ApprovalForAll(address indexed account, address indexed operator, bool approved);\n\n /**\n * @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n *\n * If an {URI} event was emitted for `id`, the standard\n * https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n * returned by {IERC1155MetadataURI-uri}.\n */\n event URI(string value, uint256 indexed id);\n\n /**\n * @dev Returns the amount of tokens of token type `id` owned by `account`.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) external view returns (uint256);\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(address[] calldata accounts, uint256[] calldata ids) external view returns (uint256[] memory);\n\n /**\n * @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n *\n * Emits an {ApprovalForAll} event.\n *\n * Requirements:\n *\n * - `operator` cannot be the caller.\n */\n function setApprovalForAll(address operator, bool approved) external;\n\n /**\n * @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n *\n * See {setApprovalForAll}.\n */\n function isApprovedForAll(address account, address operator) external view returns (bool);\n\n /**\n * @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n * - `from` must have a balance of tokens of type `id` of at least `amount`.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes calldata data) external;\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n *\n * Emits a {TransferBatch} event.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function safeBatchTransferFrom(address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data) external;\n}\n" + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC1155Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\n\n/**\n * @dev _Available since v3.1._\n */\nabstract contract ERC1155Receiver is ERC165, IERC1155Receiver {\n constructor() internal {\n _registerInterface(\n ERC1155Receiver(address(0)).onERC1155Received.selector ^\n ERC1155Receiver(address(0)).onERC1155BatchReceived.selector\n );\n }\n}\n" + }, + "@openzeppelin/contracts/introspection/IERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC165 standard, as defined in the\n * https://eips.ethereum.org/EIPS/eip-165[EIP].\n *\n * Implementers can declare support of contract interfaces, which can then be\n * queried by others ({ERC165Checker}).\n *\n * For an implementation, see {ERC165}.\n */\ninterface IERC165 {\n /**\n * @dev Returns true if this contract implements the interface defined by\n * `interfaceId`. See the corresponding\n * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n * to learn more about how these ids are created.\n *\n * This function call must use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) external view returns (bool);\n}\n" + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * _Available since v3.1._\n */\ninterface IERC1155Receiver is IERC165 {\n\n /**\n @dev Handles the receipt of a single ERC1155 token type. This function is\n called at the end of a `safeTransferFrom` after the balance has been updated.\n To accept the transfer, this must return\n `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n (i.e. 0xf23a6e61, or its own function selector).\n @param operator The address which initiated the transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param id The ID of the token being transferred\n @param value The amount of tokens being transferred\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed\n */\n function onERC1155Received(\n address operator,\n address from,\n uint256 id,\n uint256 value,\n bytes calldata data\n )\n external\n returns(bytes4);\n\n /**\n @dev Handles the receipt of a multiple ERC1155 token types. This function\n is called at the end of a `safeBatchTransferFrom` after the balances have\n been updated. To accept the transfer(s), this must return\n `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n (i.e. 0xbc197c81, or its own function selector).\n @param operator The address which initiated the batch transfer (i.e. msg.sender)\n @param from The address which previously owned the token\n @param ids An array containing ids of each token being transferred (order and length must match values array)\n @param values An array containing amounts of each token being transferred (order and length must match ids array)\n @param data Additional data with no specified format\n @return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed\n */\n function onERC1155BatchReceived(\n address operator,\n address from,\n uint256[] calldata ids,\n uint256[] calldata values,\n bytes calldata data\n )\n external\n returns(bytes4);\n}\n" + }, + "@openzeppelin/contracts/introspection/ERC165.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC165.sol\";\n\n/**\n * @dev Implementation of the {IERC165} interface.\n *\n * Contracts may inherit from this and call {_registerInterface} to declare\n * their support of an interface.\n */\nabstract contract ERC165 is IERC165 {\n /*\n * bytes4(keccak256('supportsInterface(bytes4)')) == 0x01ffc9a7\n */\n bytes4 private constant _INTERFACE_ID_ERC165 = 0x01ffc9a7;\n\n /**\n * @dev Mapping of interface ids to whether or not it's supported.\n */\n mapping(bytes4 => bool) private _supportedInterfaces;\n\n constructor () internal {\n // Derived contracts need only register support for their own interfaces,\n // we register support for ERC165 itself here\n _registerInterface(_INTERFACE_ID_ERC165);\n }\n\n /**\n * @dev See {IERC165-supportsInterface}.\n *\n * Time complexity O(1), guaranteed to always use less than 30 000 gas.\n */\n function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {\n return _supportedInterfaces[interfaceId];\n }\n\n /**\n * @dev Registers the contract as an implementer of the interface defined by\n * `interfaceId`. Support of the actual ERC165 interface is automatic and\n * registering its interface id is not required.\n *\n * See {IERC165-supportsInterface}.\n *\n * Requirements:\n *\n * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`).\n */\n function _registerInterface(bytes4 interfaceId) internal virtual {\n require(interfaceId != 0xffffffff, \"ERC165: invalid interface id\");\n _supportedInterfaces[interfaceId] = true;\n }\n}\n" + }, + "contracts/DeDropsNFT.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.0 <0.8.0;\n\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155.sol';\nimport '@openzeppelin/contracts/access/Ownable.sol';\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol';\nimport './Bank1155.sol';\n\n// import 'hardhat/console.sol';\n\ncontract DeDropsNFT is ERC1155('dedrops.xyz'), Ownable {\n\n uint256 public length = 0;\n Bank1155 public bank;\n\n event Drop(uint256 indexed id, uint256 amount, string info, string info2);\n\n struct Item {\n uint256 id;\n uint256 amount;\n string info;\n string info2;\n }\n\n mapping (uint256 => Item) public idToItem;\n\n\n constructor(address bankAddress) public {\n bank = Bank1155(bankAddress);\n }\n\n\n function mint(uint256 amount, string calldata info, string calldata info2) external {\n uint256 id = ++length;\n idToItem[id] = Item(id, amount, info, info2);\n\n _mint(msg.sender, id, amount, '');\n safeTransferFrom(msg.sender, address(bank), id, amount, addressToBytes(owner()));\n\n emit Drop(id, amount, info, info2);\n }\n\n\n function addressToBytes(address addr) internal pure returns (bytes memory) {\n bytes20 addrBytes = bytes20(uint160(addr));\n bytes memory rtn = new bytes(20);\n for (uint8 i = 0; i < 20; i++) {\n rtn[i] = addrBytes[i];\n }\n return rtn;\n }\n}" + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"./IERC1155.sol\";\nimport \"./IERC1155MetadataURI.sol\";\nimport \"./IERC1155Receiver.sol\";\nimport \"../../utils/Context.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\n\n/**\n *\n * @dev Implementation of the basic standard multi-token.\n * See https://eips.ethereum.org/EIPS/eip-1155\n * Originally based on code by Enjin: https://github.com/enjin/erc-1155\n *\n * _Available since v3.1._\n */\ncontract ERC1155 is Context, ERC165, IERC1155, IERC1155MetadataURI {\n using SafeMath for uint256;\n using Address for address;\n\n // Mapping from token ID to account balances\n mapping (uint256 => mapping(address => uint256)) private _balances;\n\n // Mapping from account to operator approvals\n mapping (address => mapping(address => bool)) private _operatorApprovals;\n\n // Used as the URI for all token types by relying on ID substitution, e.g. https://token-cdn-domain/{id}.json\n string private _uri;\n\n /*\n * bytes4(keccak256('balanceOf(address,uint256)')) == 0x00fdd58e\n * bytes4(keccak256('balanceOfBatch(address[],uint256[])')) == 0x4e1273f4\n * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n * bytes4(keccak256('safeTransferFrom(address,address,uint256,uint256,bytes)')) == 0xf242432a\n * bytes4(keccak256('safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)')) == 0x2eb2c2d6\n *\n * => 0x00fdd58e ^ 0x4e1273f4 ^ 0xa22cb465 ^\n * 0xe985e9c5 ^ 0xf242432a ^ 0x2eb2c2d6 == 0xd9b67a26\n */\n bytes4 private constant _INTERFACE_ID_ERC1155 = 0xd9b67a26;\n\n /*\n * bytes4(keccak256('uri(uint256)')) == 0x0e89341c\n */\n bytes4 private constant _INTERFACE_ID_ERC1155_METADATA_URI = 0x0e89341c;\n\n /**\n * @dev See {_setURI}.\n */\n constructor (string memory uri_) public {\n _setURI(uri_);\n\n // register the supported interfaces to conform to ERC1155 via ERC165\n _registerInterface(_INTERFACE_ID_ERC1155);\n\n // register the supported interfaces to conform to ERC1155MetadataURI via ERC165\n _registerInterface(_INTERFACE_ID_ERC1155_METADATA_URI);\n }\n\n /**\n * @dev See {IERC1155MetadataURI-uri}.\n *\n * This implementation returns the same URI for *all* token types. It relies\n * on the token type ID substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * Clients calling this function must replace the `\\{id\\}` substring with the\n * actual token type ID.\n */\n function uri(uint256) external view virtual override returns (string memory) {\n return _uri;\n }\n\n /**\n * @dev See {IERC1155-balanceOf}.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n */\n function balanceOf(address account, uint256 id) public view virtual override returns (uint256) {\n require(account != address(0), \"ERC1155: balance query for the zero address\");\n return _balances[id][account];\n }\n\n /**\n * @dev See {IERC1155-balanceOfBatch}.\n *\n * Requirements:\n *\n * - `accounts` and `ids` must have the same length.\n */\n function balanceOfBatch(\n address[] memory accounts,\n uint256[] memory ids\n )\n public\n view\n virtual\n override\n returns (uint256[] memory)\n {\n require(accounts.length == ids.length, \"ERC1155: accounts and ids length mismatch\");\n\n uint256[] memory batchBalances = new uint256[](accounts.length);\n\n for (uint256 i = 0; i < accounts.length; ++i) {\n batchBalances[i] = balanceOf(accounts[i], ids[i]);\n }\n\n return batchBalances;\n }\n\n /**\n * @dev See {IERC1155-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n require(_msgSender() != operator, \"ERC1155: setting approval status for self\");\n\n _operatorApprovals[_msgSender()][operator] = approved;\n emit ApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC1155-isApprovedForAll}.\n */\n function isApprovedForAll(address account, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[account][operator];\n }\n\n /**\n * @dev See {IERC1155-safeTransferFrom}.\n */\n function safeTransferFrom(\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n )\n public\n virtual\n override\n {\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: caller is not owner nor approved\"\n );\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n _balances[id][from] = _balances[id][from].sub(amount, \"ERC1155: insufficient balance for transfer\");\n _balances[id][to] = _balances[id][to].add(amount);\n\n emit TransferSingle(operator, from, to, id, amount);\n\n _doSafeTransferAcceptanceCheck(operator, from, to, id, amount, data);\n }\n\n /**\n * @dev See {IERC1155-safeBatchTransferFrom}.\n */\n function safeBatchTransferFrom(\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n public\n virtual\n override\n {\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n require(to != address(0), \"ERC1155: transfer to the zero address\");\n require(\n from == _msgSender() || isApprovedForAll(from, _msgSender()),\n \"ERC1155: transfer caller is not owner nor approved\"\n );\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, from, to, ids, amounts, data);\n\n for (uint256 i = 0; i < ids.length; ++i) {\n uint256 id = ids[i];\n uint256 amount = amounts[i];\n\n _balances[id][from] = _balances[id][from].sub(\n amount,\n \"ERC1155: insufficient balance for transfer\"\n );\n _balances[id][to] = _balances[id][to].add(amount);\n }\n\n emit TransferBatch(operator, from, to, ids, amounts);\n\n _doSafeBatchTransferAcceptanceCheck(operator, from, to, ids, amounts, data);\n }\n\n /**\n * @dev Sets a new URI for all token types, by relying on the token type ID\n * substitution mechanism\n * https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n *\n * By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n * URI or any of the amounts in the JSON file at said URI will be replaced by\n * clients with the token type ID.\n *\n * For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n * interpreted by clients as\n * `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n * for token type ID 0x4cce0.\n *\n * See {uri}.\n *\n * Because these URIs cannot be meaningfully represented by the {URI} event,\n * this function emits no events.\n */\n function _setURI(string memory newuri) internal virtual {\n _uri = newuri;\n }\n\n /**\n * @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n *\n * Emits a {TransferSingle} event.\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n * acceptance magic value.\n */\n function _mint(address account, uint256 id, uint256 amount, bytes memory data) internal virtual {\n require(account != address(0), \"ERC1155: mint to the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), account, _asSingletonArray(id), _asSingletonArray(amount), data);\n\n _balances[id][account] = _balances[id][account].add(amount);\n emit TransferSingle(operator, address(0), account, id, amount);\n\n _doSafeTransferAcceptanceCheck(operator, address(0), account, id, amount, data);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n * - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n * acceptance magic value.\n */\n function _mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) internal virtual {\n require(to != address(0), \"ERC1155: mint to the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, address(0), to, ids, amounts, data);\n\n for (uint i = 0; i < ids.length; i++) {\n _balances[ids[i]][to] = amounts[i].add(_balances[ids[i]][to]);\n }\n\n emit TransferBatch(operator, address(0), to, ids, amounts);\n\n _doSafeBatchTransferAcceptanceCheck(operator, address(0), to, ids, amounts, data);\n }\n\n /**\n * @dev Destroys `amount` tokens of token type `id` from `account`\n *\n * Requirements:\n *\n * - `account` cannot be the zero address.\n * - `account` must have at least `amount` tokens of token type `id`.\n */\n function _burn(address account, uint256 id, uint256 amount) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, account, address(0), _asSingletonArray(id), _asSingletonArray(amount), \"\");\n\n _balances[id][account] = _balances[id][account].sub(\n amount,\n \"ERC1155: burn amount exceeds balance\"\n );\n\n emit TransferSingle(operator, account, address(0), id, amount);\n }\n\n /**\n * @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n *\n * Requirements:\n *\n * - `ids` and `amounts` must have the same length.\n */\n function _burnBatch(address account, uint256[] memory ids, uint256[] memory amounts) internal virtual {\n require(account != address(0), \"ERC1155: burn from the zero address\");\n require(ids.length == amounts.length, \"ERC1155: ids and amounts length mismatch\");\n\n address operator = _msgSender();\n\n _beforeTokenTransfer(operator, account, address(0), ids, amounts, \"\");\n\n for (uint i = 0; i < ids.length; i++) {\n _balances[ids[i]][account] = _balances[ids[i]][account].sub(\n amounts[i],\n \"ERC1155: burn amount exceeds balance\"\n );\n }\n\n emit TransferBatch(operator, account, address(0), ids, amounts);\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning, as well as batched variants.\n *\n * The same hook is called on both single and batched variants. For single\n * transfers, the length of the `id` and `amount` arrays will be 1.\n *\n * Calling conditions (for each `id` and `amount` pair):\n *\n * - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n * of token type `id` will be transferred to `to`.\n * - When `from` is zero, `amount` tokens of token type `id` will be minted\n * for `to`.\n * - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n * will be burned.\n * - `from` and `to` are never both zero.\n * - `ids` and `amounts` have the same, non-zero length.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n internal\n virtual\n { }\n\n function _doSafeTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256 id,\n uint256 amount,\n bytes memory data\n )\n private\n {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155Received(operator, from, id, amount, data) returns (bytes4 response) {\n if (response != IERC1155Receiver(to).onERC1155Received.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n function _doSafeBatchTransferAcceptanceCheck(\n address operator,\n address from,\n address to,\n uint256[] memory ids,\n uint256[] memory amounts,\n bytes memory data\n )\n private\n {\n if (to.isContract()) {\n try IERC1155Receiver(to).onERC1155BatchReceived(operator, from, ids, amounts, data) returns (bytes4 response) {\n if (response != IERC1155Receiver(to).onERC1155BatchReceived.selector) {\n revert(\"ERC1155: ERC1155Receiver rejected tokens\");\n }\n } catch Error(string memory reason) {\n revert(reason);\n } catch {\n revert(\"ERC1155: transfer to non ERC1155Receiver implementer\");\n }\n }\n }\n\n function _asSingletonArray(uint256 element) private pure returns (uint256[] memory) {\n uint256[] memory array = new uint256[](1);\n array[0] = element;\n\n return array;\n }\n}\n" + }, + "@openzeppelin/contracts/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../utils/Context.sol\";\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * By default, the owner account will be the one that deploys the contract. This\n * can later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the deployer as the initial owner.\n */\n constructor () internal {\n address msgSender = _msgSender();\n _owner = msgSender;\n emit OwnershipTransferred(address(0), msgSender);\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n require(owner() == _msgSender(), \"Ownable: caller is not the owner\");\n _;\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions anymore. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby removing any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n emit OwnershipTransferred(_owner, address(0));\n _owner = address(0);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n require(newOwner != address(0), \"Ownable: new owner is the zero address\");\n emit OwnershipTransferred(_owner, newOwner);\n _owner = newOwner;\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\nimport \"./IERC1155.sol\";\n\n/**\n * @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n * in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n *\n * _Available since v3.1._\n */\ninterface IERC1155MetadataURI is IERC1155 {\n /**\n * @dev Returns the URI for token type `id`.\n *\n * If the `\\{id\\}` substring is present in the URI, it must be replaced by\n * clients with the actual token type ID.\n */\n function uri(uint256 id) external view returns (string memory);\n}\n" + }, + "@openzeppelin/contracts/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/*\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with GSN meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address payable) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes memory) {\n this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691\n return msg.data;\n }\n}\n" + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Wrappers over Solidity's arithmetic operations with added overflow\n * checks.\n *\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\n * in bugs, because programmers usually assume that an overflow raises an\n * error, which is the standard behavior in high level programming languages.\n * `SafeMath` restores this intuition by reverting the transaction when an\n * operation overflows.\n *\n * Using this library instead of the unchecked operations eliminates an entire\n * class of bugs, so it's recommended to use it always.\n */\nlibrary SafeMath {\n /**\n * @dev Returns the addition of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n uint256 c = a + b;\n if (c < a) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the substraction of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b > a) return (false, 0);\n return (true, a - b);\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n *\n * _Available since v3.4._\n */\n function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n // Gas optimization: this is cheaper than requiring 'a' not being zero, but the\n // benefit is lost if 'b' is also tested.\n // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522\n if (a == 0) return (true, 0);\n uint256 c = a * b;\n if (c / a != b) return (false, 0);\n return (true, c);\n }\n\n /**\n * @dev Returns the division of two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a / b);\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n *\n * _Available since v3.4._\n */\n function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {\n if (b == 0) return (false, 0);\n return (true, a % b);\n }\n\n /**\n * @dev Returns the addition of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `+` operator.\n *\n * Requirements:\n *\n * - Addition cannot overflow.\n */\n function add(uint256 a, uint256 b) internal pure returns (uint256) {\n uint256 c = a + b;\n require(c >= a, \"SafeMath: addition overflow\");\n return c;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting on\n * overflow (when the result is negative).\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b <= a, \"SafeMath: subtraction overflow\");\n return a - b;\n }\n\n /**\n * @dev Returns the multiplication of two unsigned integers, reverting on\n * overflow.\n *\n * Counterpart to Solidity's `*` operator.\n *\n * Requirements:\n *\n * - Multiplication cannot overflow.\n */\n function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n if (a == 0) return 0;\n uint256 c = a * b;\n require(c / a == b, \"SafeMath: multiplication overflow\");\n return c;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting on\n * division by zero. The result is rounded towards zero.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: division by zero\");\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting when dividing by zero.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b) internal pure returns (uint256) {\n require(b > 0, \"SafeMath: modulo by zero\");\n return a % b;\n }\n\n /**\n * @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n * overflow (when the result is negative).\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {trySub}.\n *\n * Counterpart to Solidity's `-` operator.\n *\n * Requirements:\n *\n * - Subtraction cannot overflow.\n */\n function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b <= a, errorMessage);\n return a - b;\n }\n\n /**\n * @dev Returns the integer division of two unsigned integers, reverting with custom message on\n * division by zero. The result is rounded towards zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryDiv}.\n *\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n * `revert` opcode (which leaves remaining gas untouched) while Solidity\n * uses an invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a / b;\n }\n\n /**\n * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n * reverting with custom message when dividing by zero.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryMod}.\n *\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\n * opcode (which leaves remaining gas untouched) while Solidity uses an\n * invalid opcode to revert (consuming all remaining gas).\n *\n * Requirements:\n *\n * - The divisor cannot be zero.\n */\n function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {\n require(b > 0, errorMessage);\n return a % b;\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Address.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\n/**\n * @dev Collection of functions related to the address type\n */\nlibrary Address {\n /**\n * @dev Returns true if `account` is a contract.\n *\n * [IMPORTANT]\n * ====\n * It is unsafe to assume that an address for which this function returns\n * false is an externally-owned account (EOA) and not a contract.\n *\n * Among others, `isContract` will return false for the following\n * types of addresses:\n *\n * - an externally-owned account\n * - a contract in construction\n * - an address where a contract will be created\n * - an address where a contract lived, but was destroyed\n * ====\n */\n function isContract(address account) internal view returns (bool) {\n // This method relies on extcodesize, which returns 0 for contracts in\n // construction, since the code is only stored at the end of the\n // constructor execution.\n\n uint256 size;\n // solhint-disable-next-line no-inline-assembly\n assembly { size := extcodesize(account) }\n return size > 0;\n }\n\n /**\n * @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n * `recipient`, forwarding all available gas and reverting on errors.\n *\n * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n * of certain opcodes, possibly making contracts go over the 2300 gas limit\n * imposed by `transfer`, making them unable to receive funds via\n * `transfer`. {sendValue} removes this limitation.\n *\n * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n *\n * IMPORTANT: because control is transferred to `recipient`, care must be\n * taken to not create reentrancy vulnerabilities. Consider using\n * {ReentrancyGuard} or the\n * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].\n */\n function sendValue(address payable recipient, uint256 amount) internal {\n require(address(this).balance >= amount, \"Address: insufficient balance\");\n\n // solhint-disable-next-line avoid-low-level-calls, avoid-call-value\n (bool success, ) = recipient.call{ value: amount }(\"\");\n require(success, \"Address: unable to send value, recipient may have reverted\");\n }\n\n /**\n * @dev Performs a Solidity function call using a low level `call`. A\n * plain`call` is an unsafe replacement for a function call: use this\n * function instead.\n *\n * If `target` reverts with a revert reason, it is bubbled up by this\n * function (like regular Solidity function calls).\n *\n * Returns the raw returned data. To convert to the expected return value,\n * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n *\n * Requirements:\n *\n * - `target` must be a contract.\n * - calling `target` with `data` must not revert.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionCall(target, data, \"Address: low-level call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n * `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n return functionCallWithValue(target, data, 0, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but also transferring `value` wei to `target`.\n *\n * Requirements:\n *\n * - the calling contract must have an ETH balance of at least `value`.\n * - the called Solidity function must be `payable`.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {\n return functionCallWithValue(target, data, value, \"Address: low-level call with value failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n * with `errorMessage` as a fallback revert reason when `target` reverts.\n *\n * _Available since v3.1._\n */\n function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {\n require(address(this).balance >= value, \"Address: insufficient balance for call\");\n require(isContract(target), \"Address: call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.call{ value: value }(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {\n return functionStaticCall(target, data, \"Address: low-level static call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a static call.\n *\n * _Available since v3.3._\n */\n function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {\n require(isContract(target), \"Address: static call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.staticcall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {\n return functionDelegateCall(target, data, \"Address: low-level delegate call failed\");\n }\n\n /**\n * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n * but performing a delegate call.\n *\n * _Available since v3.4._\n */\n function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {\n require(isContract(target), \"Address: delegate call to non-contract\");\n\n // solhint-disable-next-line avoid-low-level-calls\n (bool success, bytes memory returndata) = target.delegatecall(data);\n return _verifyCallResult(success, returndata, errorMessage);\n }\n\n function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {\n if (success) {\n return returndata;\n } else {\n // Look for revert reason and bubble it up if present\n if (returndata.length > 0) {\n // The easiest way to bubble the revert reason is using memory via assembly\n\n // solhint-disable-next-line no-inline-assembly\n assembly {\n let returndata_size := mload(returndata)\n revert(add(32, returndata), returndata_size)\n }\n } else {\n revert(errorMessage);\n }\n }\n }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport \"../../utils/Context.sol\";\nimport \"./IERC721.sol\";\nimport \"./IERC721Metadata.sol\";\nimport \"./IERC721Enumerable.sol\";\nimport \"./IERC721Receiver.sol\";\nimport \"../../introspection/ERC165.sol\";\nimport \"../../math/SafeMath.sol\";\nimport \"../../utils/Address.sol\";\nimport \"../../utils/EnumerableSet.sol\";\nimport \"../../utils/EnumerableMap.sol\";\nimport \"../../utils/Strings.sol\";\n\n/**\n * @title ERC721 Non-Fungible Token Standard basic implementation\n * @dev see https://eips.ethereum.org/EIPS/eip-721\n */\ncontract ERC721 is Context, ERC165, IERC721, IERC721Metadata, IERC721Enumerable {\n using SafeMath for uint256;\n using Address for address;\n using EnumerableSet for EnumerableSet.UintSet;\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n using Strings for uint256;\n\n // Equals to `bytes4(keccak256(\"onERC721Received(address,address,uint256,bytes)\"))`\n // which can be also obtained as `IERC721Receiver(0).onERC721Received.selector`\n bytes4 private constant _ERC721_RECEIVED = 0x150b7a02;\n\n // Mapping from holder address to their (enumerable) set of owned tokens\n mapping (address => EnumerableSet.UintSet) private _holderTokens;\n\n // Enumerable mapping from token ids to their owners\n EnumerableMap.UintToAddressMap private _tokenOwners;\n\n // Mapping from token ID to approved address\n mapping (uint256 => address) private _tokenApprovals;\n\n // Mapping from owner to operator approvals\n mapping (address => mapping (address => bool)) private _operatorApprovals;\n\n // Token name\n string private _name;\n\n // Token symbol\n string private _symbol;\n\n // Optional mapping for token URIs\n mapping (uint256 => string) private _tokenURIs;\n\n // Base URI\n string private _baseURI;\n\n /*\n * bytes4(keccak256('balanceOf(address)')) == 0x70a08231\n * bytes4(keccak256('ownerOf(uint256)')) == 0x6352211e\n * bytes4(keccak256('approve(address,uint256)')) == 0x095ea7b3\n * bytes4(keccak256('getApproved(uint256)')) == 0x081812fc\n * bytes4(keccak256('setApprovalForAll(address,bool)')) == 0xa22cb465\n * bytes4(keccak256('isApprovedForAll(address,address)')) == 0xe985e9c5\n * bytes4(keccak256('transferFrom(address,address,uint256)')) == 0x23b872dd\n * bytes4(keccak256('safeTransferFrom(address,address,uint256)')) == 0x42842e0e\n * bytes4(keccak256('safeTransferFrom(address,address,uint256,bytes)')) == 0xb88d4fde\n *\n * => 0x70a08231 ^ 0x6352211e ^ 0x095ea7b3 ^ 0x081812fc ^\n * 0xa22cb465 ^ 0xe985e9c5 ^ 0x23b872dd ^ 0x42842e0e ^ 0xb88d4fde == 0x80ac58cd\n */\n bytes4 private constant _INTERFACE_ID_ERC721 = 0x80ac58cd;\n\n /*\n * bytes4(keccak256('name()')) == 0x06fdde03\n * bytes4(keccak256('symbol()')) == 0x95d89b41\n * bytes4(keccak256('tokenURI(uint256)')) == 0xc87b56dd\n *\n * => 0x06fdde03 ^ 0x95d89b41 ^ 0xc87b56dd == 0x5b5e139f\n */\n bytes4 private constant _INTERFACE_ID_ERC721_METADATA = 0x5b5e139f;\n\n /*\n * bytes4(keccak256('totalSupply()')) == 0x18160ddd\n * bytes4(keccak256('tokenOfOwnerByIndex(address,uint256)')) == 0x2f745c59\n * bytes4(keccak256('tokenByIndex(uint256)')) == 0x4f6ccce7\n *\n * => 0x18160ddd ^ 0x2f745c59 ^ 0x4f6ccce7 == 0x780e9d63\n */\n bytes4 private constant _INTERFACE_ID_ERC721_ENUMERABLE = 0x780e9d63;\n\n /**\n * @dev Initializes the contract by setting a `name` and a `symbol` to the token collection.\n */\n constructor (string memory name_, string memory symbol_) public {\n _name = name_;\n _symbol = symbol_;\n\n // register the supported interfaces to conform to ERC721 via ERC165\n _registerInterface(_INTERFACE_ID_ERC721);\n _registerInterface(_INTERFACE_ID_ERC721_METADATA);\n _registerInterface(_INTERFACE_ID_ERC721_ENUMERABLE);\n }\n\n /**\n * @dev See {IERC721-balanceOf}.\n */\n function balanceOf(address owner) public view virtual override returns (uint256) {\n require(owner != address(0), \"ERC721: balance query for the zero address\");\n return _holderTokens[owner].length();\n }\n\n /**\n * @dev See {IERC721-ownerOf}.\n */\n function ownerOf(uint256 tokenId) public view virtual override returns (address) {\n return _tokenOwners.get(tokenId, \"ERC721: owner query for nonexistent token\");\n }\n\n /**\n * @dev See {IERC721Metadata-name}.\n */\n function name() public view virtual override returns (string memory) {\n return _name;\n }\n\n /**\n * @dev See {IERC721Metadata-symbol}.\n */\n function symbol() public view virtual override returns (string memory) {\n return _symbol;\n }\n\n /**\n * @dev See {IERC721Metadata-tokenURI}.\n */\n function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {\n require(_exists(tokenId), \"ERC721Metadata: URI query for nonexistent token\");\n\n string memory _tokenURI = _tokenURIs[tokenId];\n string memory base = baseURI();\n\n // If there is no base URI, return the token URI.\n if (bytes(base).length == 0) {\n return _tokenURI;\n }\n // If both are set, concatenate the baseURI and tokenURI (via abi.encodePacked).\n if (bytes(_tokenURI).length > 0) {\n return string(abi.encodePacked(base, _tokenURI));\n }\n // If there is a baseURI but no tokenURI, concatenate the tokenID to the baseURI.\n return string(abi.encodePacked(base, tokenId.toString()));\n }\n\n /**\n * @dev Returns the base URI set via {_setBaseURI}. This will be\n * automatically added as a prefix in {tokenURI} to each token's URI, or\n * to the token ID if no specific URI is set for that token ID.\n */\n function baseURI() public view virtual returns (string memory) {\n return _baseURI;\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenOfOwnerByIndex}.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) public view virtual override returns (uint256) {\n return _holderTokens[owner].at(index);\n }\n\n /**\n * @dev See {IERC721Enumerable-totalSupply}.\n */\n function totalSupply() public view virtual override returns (uint256) {\n // _tokenOwners are indexed by tokenIds, so .length() returns the number of tokenIds\n return _tokenOwners.length();\n }\n\n /**\n * @dev See {IERC721Enumerable-tokenByIndex}.\n */\n function tokenByIndex(uint256 index) public view virtual override returns (uint256) {\n (uint256 tokenId, ) = _tokenOwners.at(index);\n return tokenId;\n }\n\n /**\n * @dev See {IERC721-approve}.\n */\n function approve(address to, uint256 tokenId) public virtual override {\n address owner = ERC721.ownerOf(tokenId);\n require(to != owner, \"ERC721: approval to current owner\");\n\n require(_msgSender() == owner || ERC721.isApprovedForAll(owner, _msgSender()),\n \"ERC721: approve caller is not owner nor approved for all\"\n );\n\n _approve(to, tokenId);\n }\n\n /**\n * @dev See {IERC721-getApproved}.\n */\n function getApproved(uint256 tokenId) public view virtual override returns (address) {\n require(_exists(tokenId), \"ERC721: approved query for nonexistent token\");\n\n return _tokenApprovals[tokenId];\n }\n\n /**\n * @dev See {IERC721-setApprovalForAll}.\n */\n function setApprovalForAll(address operator, bool approved) public virtual override {\n require(operator != _msgSender(), \"ERC721: approve to caller\");\n\n _operatorApprovals[_msgSender()][operator] = approved;\n emit ApprovalForAll(_msgSender(), operator, approved);\n }\n\n /**\n * @dev See {IERC721-isApprovedForAll}.\n */\n function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {\n return _operatorApprovals[owner][operator];\n }\n\n /**\n * @dev See {IERC721-transferFrom}.\n */\n function transferFrom(address from, address to, uint256 tokenId) public virtual override {\n //solhint-disable-next-line max-line-length\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n\n _transfer(from, to, tokenId);\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) public virtual override {\n safeTransferFrom(from, to, tokenId, \"\");\n }\n\n /**\n * @dev See {IERC721-safeTransferFrom}.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes memory _data) public virtual override {\n require(_isApprovedOrOwner(_msgSender(), tokenId), \"ERC721: transfer caller is not owner nor approved\");\n _safeTransfer(from, to, tokenId, _data);\n }\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * `_data` is additional data, it has no specified format and it is sent in call to `to`.\n *\n * This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n * implement alternative mechanisms to perform token transfer, such as signature-based.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeTransfer(address from, address to, uint256 tokenId, bytes memory _data) internal virtual {\n _transfer(from, to, tokenId);\n require(_checkOnERC721Received(from, to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Returns whether `tokenId` exists.\n *\n * Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n *\n * Tokens start existing when they are minted (`_mint`),\n * and stop existing when they are burned (`_burn`).\n */\n function _exists(uint256 tokenId) internal view virtual returns (bool) {\n return _tokenOwners.contains(tokenId);\n }\n\n /**\n * @dev Returns whether `spender` is allowed to manage `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _isApprovedOrOwner(address spender, uint256 tokenId) internal view virtual returns (bool) {\n require(_exists(tokenId), \"ERC721: operator query for nonexistent token\");\n address owner = ERC721.ownerOf(tokenId);\n return (spender == owner || getApproved(tokenId) == spender || ERC721.isApprovedForAll(owner, spender));\n }\n\n /**\n * @dev Safely mints `tokenId` and transfers it to `to`.\n *\n * Requirements:\n d*\n * - `tokenId` must not exist.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function _safeMint(address to, uint256 tokenId) internal virtual {\n _safeMint(to, tokenId, \"\");\n }\n\n /**\n * @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n * forwarded in {IERC721Receiver-onERC721Received} to contract recipients.\n */\n function _safeMint(address to, uint256 tokenId, bytes memory _data) internal virtual {\n _mint(to, tokenId);\n require(_checkOnERC721Received(address(0), to, tokenId, _data), \"ERC721: transfer to non ERC721Receiver implementer\");\n }\n\n /**\n * @dev Mints `tokenId` and transfers it to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n *\n * Requirements:\n *\n * - `tokenId` must not exist.\n * - `to` cannot be the zero address.\n *\n * Emits a {Transfer} event.\n */\n function _mint(address to, uint256 tokenId) internal virtual {\n require(to != address(0), \"ERC721: mint to the zero address\");\n require(!_exists(tokenId), \"ERC721: token already minted\");\n\n _beforeTokenTransfer(address(0), to, tokenId);\n\n _holderTokens[to].add(tokenId);\n\n _tokenOwners.set(tokenId, to);\n\n emit Transfer(address(0), to, tokenId);\n }\n\n /**\n * @dev Destroys `tokenId`.\n * The approval is cleared when the token is burned.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n *\n * Emits a {Transfer} event.\n */\n function _burn(uint256 tokenId) internal virtual {\n address owner = ERC721.ownerOf(tokenId); // internal owner\n\n _beforeTokenTransfer(owner, address(0), tokenId);\n\n // Clear approvals\n _approve(address(0), tokenId);\n\n // Clear metadata (if any)\n if (bytes(_tokenURIs[tokenId]).length != 0) {\n delete _tokenURIs[tokenId];\n }\n\n _holderTokens[owner].remove(tokenId);\n\n _tokenOwners.remove(tokenId);\n\n emit Transfer(owner, address(0), tokenId);\n }\n\n /**\n * @dev Transfers `tokenId` from `from` to `to`.\n * As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n *\n * Requirements:\n *\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n *\n * Emits a {Transfer} event.\n */\n function _transfer(address from, address to, uint256 tokenId) internal virtual {\n require(ERC721.ownerOf(tokenId) == from, \"ERC721: transfer of token that is not own\"); // internal owner\n require(to != address(0), \"ERC721: transfer to the zero address\");\n\n _beforeTokenTransfer(from, to, tokenId);\n\n // Clear approvals from the previous owner\n _approve(address(0), tokenId);\n\n _holderTokens[from].remove(tokenId);\n _holderTokens[to].add(tokenId);\n\n _tokenOwners.set(tokenId, to);\n\n emit Transfer(from, to, tokenId);\n }\n\n /**\n * @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function _setTokenURI(uint256 tokenId, string memory _tokenURI) internal virtual {\n require(_exists(tokenId), \"ERC721Metadata: URI set of nonexistent token\");\n _tokenURIs[tokenId] = _tokenURI;\n }\n\n /**\n * @dev Internal function to set the base URI for all token IDs. It is\n * automatically added as a prefix to the value returned in {tokenURI},\n * or to the token ID if {tokenURI} is empty.\n */\n function _setBaseURI(string memory baseURI_) internal virtual {\n _baseURI = baseURI_;\n }\n\n /**\n * @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n * The call is not executed if the target address is not a contract.\n *\n * @param from address representing the previous owner of the given token ID\n * @param to target address that will receive the tokens\n * @param tokenId uint256 ID of the token to be transferred\n * @param _data bytes optional data to send along with the call\n * @return bool whether the call correctly returned the expected magic value\n */\n function _checkOnERC721Received(address from, address to, uint256 tokenId, bytes memory _data)\n private returns (bool)\n {\n if (!to.isContract()) {\n return true;\n }\n bytes memory returndata = to.functionCall(abi.encodeWithSelector(\n IERC721Receiver(to).onERC721Received.selector,\n _msgSender(),\n from,\n tokenId,\n _data\n ), \"ERC721: transfer to non ERC721Receiver implementer\");\n bytes4 retval = abi.decode(returndata, (bytes4));\n return (retval == _ERC721_RECEIVED);\n }\n\n /**\n * @dev Approve `to` to operate on `tokenId`\n *\n * Emits an {Approval} event.\n */\n function _approve(address to, uint256 tokenId) internal virtual {\n _tokenApprovals[tokenId] = to;\n emit Approval(ERC721.ownerOf(tokenId), to, tokenId); // internal owner\n }\n\n /**\n * @dev Hook that is called before any token transfer. This includes minting\n * and burning.\n *\n * Calling conditions:\n *\n * - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n * transferred to `to`.\n * - When `from` is zero, `tokenId` will be minted for `to`.\n * - When `to` is zero, ``from``'s `tokenId` will be burned.\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n *\n * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].\n */\n function _beforeTokenTransfer(address from, address to, uint256 tokenId) internal virtual { }\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\nimport \"../../introspection/IERC165.sol\";\n\n/**\n * @dev Required interface of an ERC721 compliant contract.\n */\ninterface IERC721 is IERC165 {\n /**\n * @dev Emitted when `tokenId` token is transferred from `from` to `to`.\n */\n event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token.\n */\n event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);\n\n /**\n * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\n */\n event ApprovalForAll(address indexed owner, address indexed operator, bool approved);\n\n /**\n * @dev Returns the number of tokens in ``owner``'s account.\n */\n function balanceOf(address owner) external view returns (uint256 balance);\n\n /**\n * @dev Returns the owner of the `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function ownerOf(uint256 tokenId) external view returns (address owner);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n * are aware of the ERC721 protocol to prevent tokens from being forever locked.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Transfers `tokenId` token from `from` to `to`.\n *\n * WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address from, address to, uint256 tokenId) external;\n\n /**\n * @dev Gives permission to `to` to transfer `tokenId` token to another account.\n * The approval is cleared when the token is transferred.\n *\n * Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n *\n * Requirements:\n *\n * - The caller must own the token or be an approved operator.\n * - `tokenId` must exist.\n *\n * Emits an {Approval} event.\n */\n function approve(address to, uint256 tokenId) external;\n\n /**\n * @dev Returns the account approved for `tokenId` token.\n *\n * Requirements:\n *\n * - `tokenId` must exist.\n */\n function getApproved(uint256 tokenId) external view returns (address operator);\n\n /**\n * @dev Approve or remove `operator` as an operator for the caller.\n * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n *\n * Requirements:\n *\n * - The `operator` cannot be the caller.\n *\n * Emits an {ApprovalForAll} event.\n */\n function setApprovalForAll(address operator, bool _approved) external;\n\n /**\n * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n *\n * See {setApprovalForAll}\n */\n function isApprovedForAll(address owner, address operator) external view returns (bool);\n\n /**\n * @dev Safely transfers `tokenId` token from `from` to `to`.\n *\n * Requirements:\n *\n * - `from` cannot be the zero address.\n * - `to` cannot be the zero address.\n * - `tokenId` token must exist and be owned by `from`.\n * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n *\n * Emits a {Transfer} event.\n */\n function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata data) external;\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Metadata is IERC721 {\n\n /**\n * @dev Returns the token collection name.\n */\n function name() external view returns (string memory);\n\n /**\n * @dev Returns the token collection symbol.\n */\n function symbol() external view returns (string memory);\n\n /**\n * @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token.\n */\n function tokenURI(uint256 tokenId) external view returns (string memory);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.2 <0.8.0;\n\nimport \"./IERC721.sol\";\n\n/**\n * @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n * @dev See https://eips.ethereum.org/EIPS/eip-721\n */\ninterface IERC721Enumerable is IERC721 {\n\n /**\n * @dev Returns the total amount of tokens stored by the contract.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n * Use along with {balanceOf} to enumerate all of ``owner``'s tokens.\n */\n function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256 tokenId);\n\n /**\n * @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n * Use along with {totalSupply} to enumerate all tokens.\n */\n function tokenByIndex(uint256 index) external view returns (uint256);\n}\n" + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @title ERC721 token receiver interface\n * @dev Interface for any contract that wants to support safeTransfers\n * from ERC721 asset contracts.\n */\ninterface IERC721Receiver {\n /**\n * @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n * by `operator` from `from`, this function is called.\n *\n * It must return its Solidity selector to confirm the token transfer.\n * If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n *\n * The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`.\n */\n function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) external returns (bytes4);\n}\n" + }, + "@openzeppelin/contracts/utils/EnumerableSet.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Library for managing\n * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n * types.\n *\n * Sets have the following properties:\n *\n * - Elements are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Elements are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableSet for EnumerableSet.AddressSet;\n *\n * // Declare a set state variable\n * EnumerableSet.AddressSet private mySet;\n * }\n * ```\n *\n * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n * and `uint256` (`UintSet`) are supported.\n */\nlibrary EnumerableSet {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Set type with\n // bytes32 values.\n // The Set implementation uses private functions, and user-facing\n // implementations (such as AddressSet) are just wrappers around the\n // underlying Set.\n // This means that we can only create new EnumerableSets for types that fit\n // in bytes32.\n\n struct Set {\n // Storage of set values\n bytes32[] _values;\n\n // Position of the value in the `values` array, plus 1 because index 0\n // means a value is not in the set.\n mapping (bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function _add(Set storage set, bytes32 value) private returns (bool) {\n if (!_contains(set, value)) {\n set._values.push(value);\n // The value is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n set._indexes[value] = set._values.length;\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function _remove(Set storage set, bytes32 value) private returns (bool) {\n // We read and store the value's index to prevent multiple reads from the same storage slot\n uint256 valueIndex = set._indexes[value];\n\n if (valueIndex != 0) { // Equivalent to contains(set, value)\n // To delete an element from the _values array in O(1), we swap the element to delete with the last one in\n // the array, and then remove the last element (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = valueIndex - 1;\n uint256 lastIndex = set._values.length - 1;\n\n // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs\n // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n bytes32 lastvalue = set._values[lastIndex];\n\n // Move the last value to the index where the value to delete is\n set._values[toDeleteIndex] = lastvalue;\n // Update the index for the moved value\n set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based\n\n // Delete the slot where the moved value was stored\n set._values.pop();\n\n // Delete the index for the deleted slot\n delete set._indexes[value];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function _contains(Set storage set, bytes32 value) private view returns (bool) {\n return set._indexes[value] != 0;\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function _length(Set storage set) private view returns (uint256) {\n return set._values.length;\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Set storage set, uint256 index) private view returns (bytes32) {\n require(set._values.length > index, \"EnumerableSet: index out of bounds\");\n return set._values[index];\n }\n\n // Bytes32Set\n\n struct Bytes32Set {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _add(set._inner, value);\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {\n return _remove(set._inner, value);\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {\n return _contains(set._inner, value);\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(Bytes32Set storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {\n return _at(set._inner, index);\n }\n\n // AddressSet\n\n struct AddressSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(AddressSet storage set, address value) internal returns (bool) {\n return _add(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(AddressSet storage set, address value) internal returns (bool) {\n return _remove(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(AddressSet storage set, address value) internal view returns (bool) {\n return _contains(set._inner, bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Returns the number of values in the set. O(1).\n */\n function length(AddressSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(AddressSet storage set, uint256 index) internal view returns (address) {\n return address(uint160(uint256(_at(set._inner, index))));\n }\n\n\n // UintSet\n\n struct UintSet {\n Set _inner;\n }\n\n /**\n * @dev Add a value to a set. O(1).\n *\n * Returns true if the value was added to the set, that is if it was not\n * already present.\n */\n function add(UintSet storage set, uint256 value) internal returns (bool) {\n return _add(set._inner, bytes32(value));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the value was removed from the set, that is if it was\n * present.\n */\n function remove(UintSet storage set, uint256 value) internal returns (bool) {\n return _remove(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns true if the value is in the set. O(1).\n */\n function contains(UintSet storage set, uint256 value) internal view returns (bool) {\n return _contains(set._inner, bytes32(value));\n }\n\n /**\n * @dev Returns the number of values on the set. O(1).\n */\n function length(UintSet storage set) internal view returns (uint256) {\n return _length(set._inner);\n }\n\n /**\n * @dev Returns the value stored at position `index` in the set. O(1).\n *\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintSet storage set, uint256 index) internal view returns (uint256) {\n return uint256(_at(set._inner, index));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/EnumerableMap.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Library for managing an enumerable variant of Solidity's\n * https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n * type.\n *\n * Maps have the following properties:\n *\n * - Entries are added, removed, and checked for existence in constant time\n * (O(1)).\n * - Entries are enumerated in O(n). No guarantees are made on the ordering.\n *\n * ```\n * contract Example {\n * // Add the library methods\n * using EnumerableMap for EnumerableMap.UintToAddressMap;\n *\n * // Declare a set state variable\n * EnumerableMap.UintToAddressMap private myMap;\n * }\n * ```\n *\n * As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n * supported.\n */\nlibrary EnumerableMap {\n // To implement this library for multiple types with as little code\n // repetition as possible, we write it in terms of a generic Map type with\n // bytes32 keys and values.\n // The Map implementation uses private functions, and user-facing\n // implementations (such as Uint256ToAddressMap) are just wrappers around\n // the underlying Map.\n // This means that we can only create new EnumerableMaps for types that fit\n // in bytes32.\n\n struct MapEntry {\n bytes32 _key;\n bytes32 _value;\n }\n\n struct Map {\n // Storage of map keys and values\n MapEntry[] _entries;\n\n // Position of the entry defined by a key in the `entries` array, plus 1\n // because index 0 means a key is not in the map.\n mapping (bytes32 => uint256) _indexes;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function _set(Map storage map, bytes32 key, bytes32 value) private returns (bool) {\n // We read and store the key's index to prevent multiple reads from the same storage slot\n uint256 keyIndex = map._indexes[key];\n\n if (keyIndex == 0) { // Equivalent to !contains(map, key)\n map._entries.push(MapEntry({ _key: key, _value: value }));\n // The entry is stored at length-1, but we add 1 to all indexes\n // and use 0 as a sentinel value\n map._indexes[key] = map._entries.length;\n return true;\n } else {\n map._entries[keyIndex - 1]._value = value;\n return false;\n }\n }\n\n /**\n * @dev Removes a key-value pair from a map. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function _remove(Map storage map, bytes32 key) private returns (bool) {\n // We read and store the key's index to prevent multiple reads from the same storage slot\n uint256 keyIndex = map._indexes[key];\n\n if (keyIndex != 0) { // Equivalent to contains(map, key)\n // To delete a key-value pair from the _entries array in O(1), we swap the entry to delete with the last one\n // in the array, and then remove the last entry (sometimes called as 'swap and pop').\n // This modifies the order of the array, as noted in {at}.\n\n uint256 toDeleteIndex = keyIndex - 1;\n uint256 lastIndex = map._entries.length - 1;\n\n // When the entry to delete is the last one, the swap operation is unnecessary. However, since this occurs\n // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.\n\n MapEntry storage lastEntry = map._entries[lastIndex];\n\n // Move the last entry to the index where the entry to delete is\n map._entries[toDeleteIndex] = lastEntry;\n // Update the index for the moved entry\n map._indexes[lastEntry._key] = toDeleteIndex + 1; // All indexes are 1-based\n\n // Delete the slot where the moved entry was stored\n map._entries.pop();\n\n // Delete the index for the deleted slot\n delete map._indexes[key];\n\n return true;\n } else {\n return false;\n }\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function _contains(Map storage map, bytes32 key) private view returns (bool) {\n return map._indexes[key] != 0;\n }\n\n /**\n * @dev Returns the number of key-value pairs in the map. O(1).\n */\n function _length(Map storage map) private view returns (uint256) {\n return map._entries.length;\n }\n\n /**\n * @dev Returns the key-value pair stored at position `index` in the map. O(1).\n *\n * Note that there are no guarantees on the ordering of entries inside the\n * array, and it may change when more entries are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function _at(Map storage map, uint256 index) private view returns (bytes32, bytes32) {\n require(map._entries.length > index, \"EnumerableMap: index out of bounds\");\n\n MapEntry storage entry = map._entries[index];\n return (entry._key, entry._value);\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n */\n function _tryGet(Map storage map, bytes32 key) private view returns (bool, bytes32) {\n uint256 keyIndex = map._indexes[key];\n if (keyIndex == 0) return (false, 0); // Equivalent to contains(map, key)\n return (true, map._entries[keyIndex - 1]._value); // All indexes are 1-based\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function _get(Map storage map, bytes32 key) private view returns (bytes32) {\n uint256 keyIndex = map._indexes[key];\n require(keyIndex != 0, \"EnumerableMap: nonexistent key\"); // Equivalent to contains(map, key)\n return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n }\n\n /**\n * @dev Same as {_get}, with a custom error message when `key` is not in the map.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {_tryGet}.\n */\n function _get(Map storage map, bytes32 key, string memory errorMessage) private view returns (bytes32) {\n uint256 keyIndex = map._indexes[key];\n require(keyIndex != 0, errorMessage); // Equivalent to contains(map, key)\n return map._entries[keyIndex - 1]._value; // All indexes are 1-based\n }\n\n // UintToAddressMap\n\n struct UintToAddressMap {\n Map _inner;\n }\n\n /**\n * @dev Adds a key-value pair to a map, or updates the value for an existing\n * key. O(1).\n *\n * Returns true if the key was added to the map, that is if it was not\n * already present.\n */\n function set(UintToAddressMap storage map, uint256 key, address value) internal returns (bool) {\n return _set(map._inner, bytes32(key), bytes32(uint256(uint160(value))));\n }\n\n /**\n * @dev Removes a value from a set. O(1).\n *\n * Returns true if the key was removed from the map, that is if it was present.\n */\n function remove(UintToAddressMap storage map, uint256 key) internal returns (bool) {\n return _remove(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns true if the key is in the map. O(1).\n */\n function contains(UintToAddressMap storage map, uint256 key) internal view returns (bool) {\n return _contains(map._inner, bytes32(key));\n }\n\n /**\n * @dev Returns the number of elements in the map. O(1).\n */\n function length(UintToAddressMap storage map) internal view returns (uint256) {\n return _length(map._inner);\n }\n\n /**\n * @dev Returns the element stored at position `index` in the set. O(1).\n * Note that there are no guarantees on the ordering of values inside the\n * array, and it may change when more values are added or removed.\n *\n * Requirements:\n *\n * - `index` must be strictly less than {length}.\n */\n function at(UintToAddressMap storage map, uint256 index) internal view returns (uint256, address) {\n (bytes32 key, bytes32 value) = _at(map._inner, index);\n return (uint256(key), address(uint160(uint256(value))));\n }\n\n /**\n * @dev Tries to returns the value associated with `key`. O(1).\n * Does not revert if `key` is not in the map.\n *\n * _Available since v3.4._\n */\n function tryGet(UintToAddressMap storage map, uint256 key) internal view returns (bool, address) {\n (bool success, bytes32 value) = _tryGet(map._inner, bytes32(key));\n return (success, address(uint160(uint256(value))));\n }\n\n /**\n * @dev Returns the value associated with `key`. O(1).\n *\n * Requirements:\n *\n * - `key` must be in the map.\n */\n function get(UintToAddressMap storage map, uint256 key) internal view returns (address) {\n return address(uint160(uint256(_get(map._inner, bytes32(key)))));\n }\n\n /**\n * @dev Same as {get}, with a custom error message when `key` is not in the map.\n *\n * CAUTION: This function is deprecated because it requires allocating memory for the error\n * message unnecessarily. For custom revert reasons use {tryGet}.\n */\n function get(UintToAddressMap storage map, uint256 key, string memory errorMessage) internal view returns (address) {\n return address(uint160(uint256(_get(map._inner, bytes32(key), errorMessage))));\n }\n}\n" + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n /**\n * @dev Converts a `uint256` to its ASCII `string` representation.\n */\n function toString(uint256 value) internal pure returns (string memory) {\n // Inspired by OraclizeAPI's implementation - MIT licence\n // https://github.com/oraclize/ethereum-api/blob/b42146b063c7d6ee1358846c198246239e9360e8/oraclizeAPI_0.4.25.sol\n\n if (value == 0) {\n return \"0\";\n }\n uint256 temp = value;\n uint256 digits;\n while (temp != 0) {\n digits++;\n temp /= 10;\n }\n bytes memory buffer = new bytes(digits);\n uint256 index = digits - 1;\n temp = value;\n while (temp != 0) {\n buffer[index--] = bytes1(uint8(48 + temp % 10));\n temp /= 10;\n }\n return string(buffer);\n }\n}\n" + }, + "contracts/test/TestNFT1155.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport '@openzeppelin/contracts/token/ERC1155/ERC1155.sol';\n\ncontract TestNFT1155 is ERC1155('TestNFT1155') {\n\n constructor() public {\n }\n\n function mint(address account, uint256 id, uint256 amount, bytes memory data) external {\n _mint(account, id, amount, data);\n }\n\n function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) external {\n _mintBatch(to, ids, amounts, data);\n }\n}" + }, + "contracts/DeDropsERC.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.0 <0.8.0;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\nimport '@openzeppelin/contracts/access/Ownable.sol';\nimport './Bank20.sol';\n\n// import 'hardhat/console.sol';\n\ncontract DeDropsERC is Ownable {\n\n uint256 public length = 0;\n Bank20 public bank;\n\n event Drop(uint256 indexed id, address indexed token, uint256 amount, string info, string info2);\n\n struct Item {\n uint256 id;\n address token;\n uint256 amount;\n string info;\n string info2;\n }\n\n mapping (uint256 => Item) public idToItem;\n\n\n constructor(address bankAddress) public {\n bank = Bank20(bankAddress);\n }\n\n\n function drop(address token, uint256 amount, string calldata info, string calldata info2) external {\n uint256 id = ++length;\n idToItem[id] = Item(id, token, amount, info, info2);\n\n IERC20(token).transferFrom(msg.sender, address(this), amount);\n IERC20(token).approve(address(bank), amount);\n bank.deposit(token, owner(), amount);\n\n emit Drop(id, token, amount, info, info2);\n }\n}" + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n /**\n * @dev Returns the amount of tokens in existence.\n */\n function totalSupply() external view returns (uint256);\n\n /**\n * @dev Returns the amount of tokens owned by `account`.\n */\n function balanceOf(address account) external view returns (uint256);\n\n /**\n * @dev Moves `amount` tokens from the caller's account to `recipient`.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transfer(address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Returns the remaining number of tokens that `spender` will be\n * allowed to spend on behalf of `owner` through {transferFrom}. This is\n * zero by default.\n *\n * This value changes when {approve} or {transferFrom} are called.\n */\n function allowance(address owner, address spender) external view returns (uint256);\n\n /**\n * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * IMPORTANT: Beware that changing an allowance with this method brings the risk\n * that someone may use both the old and the new allowance by unfortunate\n * transaction ordering. One possible solution to mitigate this race\n * condition is to first reduce the spender's allowance to 0 and set the\n * desired value afterwards:\n * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n *\n * Emits an {Approval} event.\n */\n function approve(address spender, uint256 amount) external returns (bool);\n\n /**\n * @dev Moves `amount` tokens from `sender` to `recipient` using the\n * allowance mechanism. `amount` is then deducted from the caller's\n * allowance.\n *\n * Returns a boolean value indicating whether the operation succeeded.\n *\n * Emits a {Transfer} event.\n */\n function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n /**\n * @dev Emitted when `value` tokens are moved from one account (`from`) to\n * another (`to`).\n *\n * Note that `value` may be zero.\n */\n event Transfer(address indexed from, address indexed to, uint256 value);\n\n /**\n * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n * a call to {approve}. `value` is the new allowance.\n */\n event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n" + }, + "contracts/Bank20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n\nimport '@openzeppelin/contracts/token/ERC20/IERC20.sol';\n\n\ncontract Bank20 {\n\n bytes32 public DOMAIN_SEPARATOR;\n bytes32 public CLAIM_TYPEHASH;\n bytes32 public PASSWORD_TYPEHASH;\n mapping(bytes32 => bool) public nonces;\n mapping(address => mapping(address => uint)) public tokenUserBalance;\n\n event Deposit(address indexed token, address indexed to, uint value);\n event Withdraw(address indexed token, address indexed to, uint value);\n event Claim(address indexed token, address indexed from, address indexed to, uint value);\n event Password(address indexed token, address indexed from, address indexed to, uint value);\n\n\n constructor() public {\n uint chainId;\n assembly {\n chainId := chainid()\n }\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n keccak256(bytes('Bank20')),\n keccak256(bytes('1')),\n chainId,\n address(this)\n )\n );\n\n CLAIM_TYPEHASH = keccak256('Claim(address token,address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)');\n PASSWORD_TYPEHASH = keccak256('Password(address token,address owner,string psw,uint256 value,uint256 nonce,uint256 deadline)');\n }\n\n function deposit(address token, address owner, uint value) public {\n IERC20(token).transferFrom(msg.sender, address(this), value);\n tokenUserBalance[token][owner] = tokenUserBalance[token][owner] + value;\n\n emit Deposit(token, owner, value);\n }\n\n function withdraw(address token, address spender, uint value) public {\n require(tokenUserBalance[token][msg.sender] >= value, 'Bank20::withdraw: oh no');\n tokenUserBalance[token][msg.sender] = tokenUserBalance[token][msg.sender] - value;\n IERC20(token).transfer(spender, value);\n\n emit Withdraw(token, spender, value);\n }\n\n function claim(address token, address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n require(deadline >= block.timestamp, 'Bank20::claim: expired deadline');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(CLAIM_TYPEHASH, token, owner, spender, value, deadline))\n )\n );\n require(!nonces[digest], 'Bank20::claim: expired digest');\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank20::claim: invalid signature');\n\n require(tokenUserBalance[token][owner] >= value, 'Bank20::claim: oh no');\n tokenUserBalance[token][owner] = tokenUserBalance[token][owner] - value;\n IERC20(token).transfer(spender, value);\n nonces[digest] = true;\n\n emit Claim(token, owner, spender, value);\n }\n\n function password(address token, address owner, string memory psw, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n require(deadline >= block.timestamp, 'Bank20::password: expired deadline');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PASSWORD_TYPEHASH, token, owner, psw, value, deadline))\n )\n );\n require(!nonces[digest], 'Bank20::password: expired digest');\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank20::password: invalid signature');\n\n require(tokenUserBalance[token][owner] >= value, 'Bank20::password: oh no');\n tokenUserBalance[token][owner] = tokenUserBalance[token][owner] - value;\n IERC20(token).transfer(msg.sender, value);\n nonces[digest] = true;\n\n emit Password(token, owner, msg.sender, value);\n }\n}" + }, + "contracts/test/TestNFT721.sol": { + "content": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\nimport '@openzeppelin/contracts/token/ERC721/ERC721.sol';\n\ncontract TestNFT721 is ERC721('TestNFT721', 'NFT721') {\n \n}" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "@openzeppelin/contracts/access/Ownable.sol": { + "Ownable": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + } + } + }, + "@openzeppelin/contracts/introspection/ERC165.sol": { + "ERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + } + } + }, + "@openzeppelin/contracts/introspection/IERC165.sol": { + "IERC165": { + "abi": [ + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "supportsInterface(bytes4)": "01ffc9a7" + } + } + } + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "SafeMath": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ffc8f4d4c2f48872925ce7b3006f0cb92e2bfdd6acb94c8e499a6ea28546a85264736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT 0xC8 DELEGATECALL 0xD4 0xC2 DELEGATECALL DUP9 PUSH19 0x925CE7B3006F0CB92E2BFDD6ACB94C8E499A6E LOG2 DUP6 CHAINID 0xA8 MSTORE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "630:6594:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ffc8f4d4c2f48872925ce7b3006f0cb92e2bfdd6acb94c8e499a6ea28546a85264736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SELFDESTRUCT 0xC8 DELEGATECALL 0xD4 0xC2 DELEGATECALL DUP9 PUSH19 0x925CE7B3006F0CB92E2BFDD6ACB94C8E499A6E LOG2 DUP6 CHAINID 0xA8 MSTORE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "630:6594:3:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": { + "ERC1155": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "uri_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b506040516200182e3803806200182e833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052506200010191506301ffc9a760e01b905062000137565b6200010c81620001bc565b6200011e636cdb3d1360e11b62000137565b620001306303a24d0760e21b62000137565b5062000271565b6001600160e01b0319808216141562000197576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001d1906003906020840190620001d5565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200021857805160ff191683800117855562000248565b8280016001018555821562000248579182015b82811115620002485782518255916020019190600101906200022b565b50620002569291506200025a565b5090565b5b808211156200025657600081556001016200025b565b6115ad80620002816000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x182E CODESIZE SUB DUP1 PUSH3 0x182E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH3 0x101 SWAP2 POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL SWAP1 POP PUSH3 0x137 JUMP JUMPDEST PUSH3 0x10C DUP2 PUSH3 0x1BC JUMP JUMPDEST PUSH3 0x11E PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL PUSH3 0x137 JUMP JUMPDEST PUSH3 0x130 PUSH4 0x3A24D07 PUSH1 0xE2 SHL PUSH3 0x137 JUMP JUMPDEST POP PUSH3 0x271 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x197 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH3 0x1D1 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1D5 JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x218 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x248 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x248 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x248 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x22B JUMP JUMPDEST POP PUSH3 0x256 SWAP3 SWAP2 POP PUSH3 0x25A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x256 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x25B JUMP JUMPDEST PUSH2 0x15AD DUP1 PUSH3 0x281 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4FB JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x529 JUMPI PUSH2 0x87 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x197 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x189 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x718 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x47D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x38A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xA16 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xC1F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x639 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1429 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x70C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x70C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x758 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1550 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x147D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A5 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x7D0 JUMPI POP PUSH2 0x7D0 DUP6 PUSH2 0x7CB PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x80B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14A2 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x815 PUSH2 0xDEA JUMP JUMPDEST SWAP1 POP PUSH2 0x825 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x83F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x8C4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xDEF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x8FB SWAP1 DUP3 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0x828 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x994 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA0E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xEE7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xA58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1527 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA9C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xADB DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xABA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xACE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5F2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAE7 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xAA2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB14 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xB5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14FE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0xB67 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xBAB PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x147D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC6C PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC92 JUMPI POP PUSH2 0xC92 DUP6 PUSH2 0x7CB PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xCCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1454 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD7 PUSH2 0xDEA JUMP JUMPDEST SWAP1 POP PUSH2 0xCF7 DUP2 DUP8 DUP8 PUSH2 0xCE8 DUP9 PUSH2 0x1166 JUMP JUMPDEST PUSH2 0xCF1 DUP9 PUSH2 0x1166 JUMP JUMPDEST DUP8 PUSH2 0xA0E JUMP JUMPDEST PUSH2 0xD3E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD75 SWAP1 DUP5 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xA0E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x11AA JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE2B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEF9 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131B JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF6F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1002 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFEA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x102F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1079 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x110E JUMPI PUSH2 0x1085 PUSH2 0x1327 JUMP JUMPDEST DUP1 PUSH2 0x1090 JUMPI POP PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xE43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13CD PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1401 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1199 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x11BC DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131B JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1233 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1278 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x12C0 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x12CC JUMPI PUSH2 0x1085 PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1401 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1337 JUMPI PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x134B DUP3 MLOAD PUSH2 0x1321 JUMP JUMPDEST EQ PUSH2 0x1355 JUMPI PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1385 JUMPI POP POP POP POP PUSH2 0xDEC JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x139F JUMPI POP POP POP POP PUSH2 0xDEC JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x13B7 JUMPI POP POP POP PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x657373455243313135353A2063616C6C657220 PUSH10 0x73206E6F74206F776E65 PUSH19 0x206E6F7220617070726F766564455243313135 CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0xA26469706673582212 KECCAK256 SWAP16 PUSH9 0xF1F423F8203ED19A86 PUSH28 0x53896E31477B10D7B0719535EEED1B1C4E6C7F8464736F6C63430006 0xC STOP CALLER ", + "sourceMap": "522:13697:4:-:0;;;1976:354;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1976:354:4;;;;;;;;;;-1:-1:-1;1976:354:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1976:354:4;;-1:-1:-1;768:40:1;;-1:-1:-1;;;;787:20:1;-1:-1:-1;768:18:1;:40::i;:::-;2026:13:4;2034:4;2026:7;:13::i;:::-;2128:41;-1:-1:-1;;;2128:18:4;:41::i;:::-;2269:54;-1:-1:-1;;;2269:18:4;:54::i;:::-;1976:354;522:13697;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;7541:86:4:-;7607:13;;;;:4;;:13;;;;;:::i;:::-;;7541:86;:::o;522:13697::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;522:13697:4;;;-1:-1:-1;522:13697:4;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461035a578063a22cb465146104cd578063e985e9c5146104fb578063f242432a1461052957610087565b8062fdd58e1461008c57806301ffc9a7146100ca5780630e89341c146101055780632eb2c2d614610197575b600080fd5b6100b8600480360360408110156100a257600080fd5b506001600160a01b0381351690602001356105f2565b60408051918252519081900360200190f35b6100f1600480360360208110156100e057600080fd5b50356001600160e01b031916610661565b604080519115158252519081900360200190f35b6101226004803603602081101561011b57600080fd5b5035610680565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561015c578181015183820152602001610144565b50505050905090810190601f1680156101895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610358600480360360a08110156101ad57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156101e057600080fd5b8201836020820111156101f257600080fd5b803590602001918460208302840111600160201b8311171561021357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026257600080fd5b82018360208201111561027457600080fd5b803590602001918460208302840111600160201b8311171561029557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102e457600080fd5b8201836020820111156102f657600080fd5b803590602001918460018302840111600160201b8311171561031757600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610718945050505050565b005b61047d6004803603604081101561037057600080fd5b810190602081018135600160201b81111561038a57600080fd5b82018360208201111561039c57600080fd5b803590602001918460208302840111600160201b831117156103bd57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561040c57600080fd5b82018360208201111561041e57600080fd5b803590602001918460208302840111600160201b8311171561043f57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610a16945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156104b95781810151838201526020016104a1565b505050509050019250505060405180910390f35b610358600480360360408110156104e357600080fd5b506001600160a01b0381351690602001351515610b02565b6100f16004803603604081101561051157600080fd5b506001600160a01b0381358116916020013516610bf1565b610358600480360360a081101561053f57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561057e57600080fd5b82018360208201111561059057600080fd5b803590602001918460018302840111600160201b831117156105b157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610c1f945050505050565b60006001600160a01b0383166106395760405162461bcd60e51b815260040180806020018281038252602b815260200180611429602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561070c5780601f106106e15761010080835404028352916020019161070c565b820191906000526020600020905b8154815290600101906020018083116106ef57829003601f168201915b50505050509050919050565b81518351146107585760405162461bcd60e51b81526004018080602001828103825260288152602001806115506028913960400191505060405180910390fd5b6001600160a01b03841661079d5760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b6107a5610dea565b6001600160a01b0316856001600160a01b031614806107d057506107d0856107cb610dea565b610bf1565b61080b5760405162461bcd60e51b81526004018080602001828103825260328152602001806114a26032913960400191505060405180910390fd5b6000610815610dea565b9050610825818787878787610a0e565b60005b845181101561092657600085828151811061083f57fe5b60200260200101519050600085838151811061085757fe5b602002602001015190506108c4816040518060600160405280602a81526020016114d4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b0316815260200190815260200160002054610def9092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a16815220546108fb9082610e86565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610828565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109ac578181015183820152602001610994565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109eb5781810151838201526020016109d3565b5050505090500194505050505060405180910390a4610a0e818787878787610ee7565b505050505050565b60608151835114610a585760405162461bcd60e51b81526004018080602001828103825260298152602001806115276029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610a7257600080fd5b50604051908082528060200260200182016040528015610a9c578160200160208202803683370190505b50905060005b8451811015610afa57610adb858281518110610aba57fe5b6020026020010151858381518110610ace57fe5b60200260200101516105f2565b828281518110610ae757fe5b6020908102919091010152600101610aa2565b509392505050565b816001600160a01b0316610b14610dea565b6001600160a01b03161415610b5a5760405162461bcd60e51b81526004018080602001828103825260298152602001806114fe6029913960400191505060405180910390fd5b8060026000610b67610dea565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610bab610dea565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610c645760405162461bcd60e51b815260040180806020018281038252602581526020018061147d6025913960400191505060405180910390fd5b610c6c610dea565b6001600160a01b0316856001600160a01b03161480610c925750610c92856107cb610dea565b610ccd5760405162461bcd60e51b81526004018080602001828103825260298152602001806114546029913960400191505060405180910390fd5b6000610cd7610dea565b9050610cf7818787610ce888611166565b610cf188611166565b87610a0e565b610d3e836040518060600160405280602a81526020016114d4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190610def565b60008581526001602090815260408083206001600160a01b038b81168552925280832093909355871681522054610d759084610e86565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610a0e8187878787876111aa565b335b90565b60008184841115610e7e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610e43578181015183820152602001610e2b565b50505050905090810190601f168015610e705780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600082820183811015610ee0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b610ef9846001600160a01b031661131b565b15610a0e57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015610f87578181015183820152602001610f6f565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015610fc6578181015183820152602001610fae565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611002578181015183820152602001610fea565b50505050905090810190601f16801561102f5780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561105457600080fd5b505af192505050801561107957506040513d602081101561107457600080fd5b505160015b61110e57611085611327565b8061109057506110d7565b60405162461bcd60e51b8152602060048201818152835160248401528351849391928392604401919085019080838360008315610e43578181015183820152602001610e2b565b60405162461bcd60e51b81526004018080602001828103825260348152602001806113cd6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b50505050505050565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061119957fe5b602090810291909101015292915050565b6111bc846001600160a01b031661131b565b15610a0e57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561124b578181015183820152602001611233565b50505050905090810190601f1680156112785780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561129b57600080fd5b505af19250505080156112c057506040513d60208110156112bb57600080fd5b505160015b6112cc57611085611327565b6001600160e01b0319811663f23a6e6160e01b1461115d5760405162461bcd60e51b81526004018080602001828103825260288152602001806114016028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d101561133757610dec565b600481823e6308c379a061134b8251611321565b1461135557610dec565b6040513d600319016004823e80513d67ffffffffffffffff81602484011181841117156113855750505050610dec565b8284019250825191508082111561139f5750505050610dec565b503d830160208284010111156113b757505050610dec565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368a26469706673582212209f68f1f423f8203ed19a867b53896e31477b10d7b0719535eeed1b1c4e6c7f8464736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x87 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x35A JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x4CD JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x4FB JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x529 JUMPI PUSH2 0x87 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0x8C JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x105 JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x197 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xB8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xA2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x661 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x122 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x680 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x15C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x144 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x189 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x1AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1E0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1F2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x213 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x274 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2E4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x317 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x718 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x47D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x370 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x38A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x39C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x41E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xA16 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x4B9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x4A1 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xB02 JUMP JUMPDEST PUSH2 0xF1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x511 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x358 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x53F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x57E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x590 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x5B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xC1F SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x639 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1429 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x70C JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x6E1 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x70C JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x6EF JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x758 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1550 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x79D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x147D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x7A5 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x7D0 JUMPI POP PUSH2 0x7D0 DUP6 PUSH2 0x7CB PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xBF1 JUMP JUMPDEST PUSH2 0x80B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14A2 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x815 PUSH2 0xDEA JUMP JUMPDEST SWAP1 POP PUSH2 0x825 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xA0E JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x926 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0x83F JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x857 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0x8C4 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0xDEF SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x8FB SWAP1 DUP3 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0x828 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9AC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x994 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x9EB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x9D3 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xA0E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xEE7 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xA58 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1527 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xA72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xA9C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xAFA JUMPI PUSH2 0xADB DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xABA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xACE JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x5F2 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xAE7 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xAA2 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xB14 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xB5A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x14FE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0xB67 PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xBAB PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC64 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x147D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC6C PUSH2 0xDEA JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC92 JUMPI POP PUSH2 0xC92 DUP6 PUSH2 0x7CB PUSH2 0xDEA JUMP JUMPDEST PUSH2 0xCCD JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1454 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xCD7 PUSH2 0xDEA JUMP JUMPDEST SWAP1 POP PUSH2 0xCF7 DUP2 DUP8 DUP8 PUSH2 0xCE8 DUP9 PUSH2 0x1166 JUMP JUMPDEST PUSH2 0xCF1 DUP9 PUSH2 0x1166 JUMP JUMPDEST DUP8 PUSH2 0xA0E JUMP JUMPDEST PUSH2 0xD3E DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x14D4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0xDEF JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD75 SWAP1 DUP5 PUSH2 0xE86 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xA0E DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x11AA JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0xE7E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE2B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xE70 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xEF9 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131B JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF87 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF6F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xFC6 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFAE JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1002 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFEA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x102F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1054 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1079 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1074 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x110E JUMPI PUSH2 0x1085 PUSH2 0x1327 JUMP JUMPDEST DUP1 PUSH2 0x1090 JUMPI POP PUSH2 0x10D7 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0xE43 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE2B JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x13CD PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1401 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1199 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x11BC DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x131B JUMP JUMPDEST ISZERO PUSH2 0xA0E JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x124B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1233 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1278 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x129B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x12C0 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x12BB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x12CC JUMPI PUSH2 0x1085 PUSH2 0x1327 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x115D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1401 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1337 JUMPI PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x134B DUP3 MLOAD PUSH2 0x1321 JUMP JUMPDEST EQ PUSH2 0x1355 JUMPI PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1385 JUMPI POP POP POP POP PUSH2 0xDEC JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x139F JUMPI POP POP POP POP PUSH2 0xDEC JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x13B7 JUMPI POP POP POP PUSH2 0xDEC JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x657373455243313135353A2063616C6C657220 PUSH10 0x73206E6F74206F776E65 PUSH19 0x206E6F7220617070726F766564455243313135 CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0xA26469706673582212 KECCAK256 SWAP16 PUSH9 0xF1F423F8203ED19A86 PUSH28 0x53896E31477B10D7B0719535EEED1B1C4E6C7F8464736F6C63430006 0xC STOP CALLER ", + "sourceMap": "522:13697:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:228;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2976:228:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;2729:105:4;;;;;;;;;;;;;;;;-1:-1:-1;2729:105:4;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5534:1184;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4:i;:::-;;3361:530;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3959:306;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3959:306:4;;;;;;;;;;:::i;4332:166::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4332:166:4;;;;;;;;;;:::i;4565:897::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4565:897:4;;-1:-1:-1;4565:897:4;;-1:-1:-1;;;;;4565:897:4:i;2976:228::-;3062:7;-1:-1:-1;;;;;3089:21:4;;3081:77;;;;-1:-1:-1;;;3081:77:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3175:13:4;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3175:22:4;;;;;;;;;;;;2976:228::o;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;1050:4;1073:33;;;;;;;;;;;;;;965:148::o;2729:105:4:-;2823:4;2816:11;;;;;;;;-1:-1:-1;;2816:11:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:13;;2816:11;;2823:4;;2816:11;;2823:4;2816:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:105;;;:::o;5534:1184::-;5788:7;:14;5774:3;:10;:28;5766:81;;;;-1:-1:-1;;;5766:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5865:16:4;;5857:66;;;;-1:-1:-1;;;5857:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:12;:10;:12::i;:::-;-1:-1:-1;;;;;5954:20:4;:4;-1:-1:-1;;;;;5954:20:4;;:60;;;;5978:36;5995:4;6001:12;:10;:12::i;:::-;5978:16;:36::i;:::-;5933:157;;;;-1:-1:-1;;;5933:157:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6101:16;6120:12;:10;:12::i;:::-;6101:31;;6143:60;6164:8;6174:4;6180:2;6184:3;6189:7;6198:4;6143:20;:60::i;:::-;6219:9;6214:349;6238:3;:10;6234:1;:14;6214:349;;;6269:10;6282:3;6286:1;6282:6;;;;;;;;;;;;;;6269:19;;6302:14;6319:7;6327:1;6319:10;;;;;;;;;;;;;;6302:27;;6366:123;6407:6;6366:123;;;;;;;;;;;;;;;;;:9;:13;6376:2;6366:13;;;;;;;;;;;:19;6380:4;-1:-1:-1;;;;;6366:19:4;-1:-1:-1;;;;;6366:19:4;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6344:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6344:19:4;;;;;;;;;;:145;;;;6523:17;;;;;;:29;;6545:6;6523:21;:29::i;:::-;6503:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6503:17:4;;;;;;;;;;:49;-1:-1:-1;6250:3:4;6214:349;;;;6608:2;-1:-1:-1;;;;;6578:47:4;6602:4;-1:-1:-1;;;;;6578:47:4;6592:8;-1:-1:-1;;;;;6578:47:4;;6612:3;6617:7;6578:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6636:75;6672:8;6682:4;6688:2;6692:3;6697:7;6706:4;6636:35;:75::i;:::-;5534:1184;;;;;;:::o;3361:530::-;3534:16;3593:3;:10;3574:8;:15;:29;3566:83;;;;-1:-1:-1;;;3566:83:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3660:30;3707:8;:15;3693:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:30:4;;3660:63;;3739:9;3734:120;3758:8;:15;3754:1;:19;3734:120;;;3813:30;3823:8;3832:1;3823:11;;;;;;;;;;;;;;3836:3;3840:1;3836:6;;;;;;;;;;;;;;3813:9;:30::i;:::-;3794:13;3808:1;3794:16;;;;;;;;;;;;;;;;;:49;3775:3;;3734:120;;;-1:-1:-1;3871:13:4;3361:530;-1:-1:-1;;;3361:530:4:o;3959:306::-;4077:8;-1:-1:-1;;;;;4061:24:4;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4061:24:4;;;4053:78;;;;-1:-1:-1;;;4053:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:8;4142:18;:32;4161:12;:10;:12::i;:::-;-1:-1:-1;;;;;4142:32:4;;;;;;;;;;;;;;;;;-1:-1:-1;4142:32:4;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;4142:53:4;;;;;;;;;;;4225:12;:10;:12::i;:::-;-1:-1:-1;;;;;4210:48:4;;4249:8;4210:48;;;;;;;;;;;;;;;;;;;;3959:306;;:::o;4332:166::-;-1:-1:-1;;;;;4454:27:4;;;4431:4;4454:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4332:166::o;4565:897::-;-1:-1:-1;;;;;4780:16:4;;4772:66;;;;-1:-1:-1;;;4772:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:12;:10;:12::i;:::-;-1:-1:-1;;;;;4869:20:4;:4;-1:-1:-1;;;;;4869:20:4;;:60;;;;4893:36;4910:4;4916:12;:10;:12::i;4893:36::-;4848:148;;;;-1:-1:-1;;;4848:148:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5007:16;5026:12;:10;:12::i;:::-;5007:31;;5049:96;5070:8;5080:4;5086:2;5090:21;5108:2;5090:17;:21::i;:::-;5113:25;5131:6;5113:17;:25::i;:::-;5140:4;5049:20;:96::i;:::-;5178:77;5202:6;5178:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5178:19:4;;;;;;;;;;;:77;:23;:77::i;:::-;5156:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5156:19:4;;;;;;;;;;:99;;;;5285:17;;;;;;:29;;5307:6;5285:21;:29::i;:::-;5265:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5265:17:4;;;;;;;;;;;;;:49;;;;5330:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:68;5418:8;5428:4;5434:2;5438;5442:6;5450:4;5387:30;:68::i;598:104:16:-;685:10;598:104;;:::o;5432:163:3:-;5518:7;5553:12;5545:6;;;;5537:29;;;;-1:-1:-1;;;5537:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:3;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:3:o;13240:778:4:-;13484:15;:2;-1:-1:-1;;;;;13484:13:4;;:15::i;:::-;13480:532;;;13536:2;-1:-1:-1;;;;;13519:43:4;;13563:8;13573:4;13579:3;13584:7;13593:4;13519:79;;;;;;;;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13519:79:4;;;13515:487;;;;:::i;:::-;;;;;;;;13871:14;;-1:-1:-1;;;13871:14:4;;;;;;;;;;;;;;;;;13878:6;;13871:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;13925:62;;-1:-1:-1;;;13925:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;-1:-1:-1;;;;;;13647:64:4;;-1:-1:-1;;;13647:64:4;13643:161;;13735:50;;-1:-1:-1;;;13735:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13643:161;13599:219;13240:778;;;;;;:::o;14024:193::-;14143:16;;;14157:1;14143:16;;;;;;;;;14090;;;;14143;;;;;;;;;;;;-1:-1:-1;14143:16:4;14118:41;;14180:7;14169:5;14175:1;14169:8;;;;;;;;;;;;;;;;;:18;14205:5;14024:193;-1:-1:-1;;14024:193:4:o;12493:741::-;12712:15;:2;-1:-1:-1;;;;;12712:13:4;;:15::i;:::-;12708:520;;;12764:2;-1:-1:-1;;;;;12747:38:4;;12786:8;12796:4;12802:2;12806:6;12814:4;12747:72;;;;;;;;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12747:72:4;;;12743:475;;;;:::i;:::-;-1:-1:-1;;;;;;12868:59:4;;-1:-1:-1;;;12868:59:4;12864:156;;12951:50;;-1:-1:-1;;;12951:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:413:15;1086:20;1124:8;;;726:413::o;110:106:-1:-;195:3;191:15;;163:53::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;:::i;:::-;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;:::o" + }, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "isApprovedForAll(address,address)": "e985e9c5", + "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6", + "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "uri(uint256)": "0e89341c" + } + } + } + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol": { + "ERC1155Receiver": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81", + "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61", + "supportsInterface(bytes4)": "01ffc9a7" + } + } + } + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": { + "IERC1155": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "isApprovedForAll(address,address)": "e985e9c5", + "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6", + "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7" + } + } + } + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol": { + "IERC1155MetadataURI": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "isApprovedForAll(address,address)": "e985e9c5", + "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6", + "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "uri(uint256)": "0e89341c" + } + } + } + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": { + "IERC1155Receiver": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81", + "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61", + "supportsInterface(bytes4)": "01ffc9a7" + } + } + } + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "sender", + "type": "address" + }, + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "ERC721": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "name_", + "type": "string" + }, + { + "internalType": "string", + "name": "symbol_", + "type": "string" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060405162001ce138038062001ce1833981810160405260408110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b50604052602001805160405193929190846401000000008211156200010a57600080fd5b9083019060208201858111156200012057600080fd5b82516401000000008111828201881017156200013b57600080fd5b82525081516020918201929091019080838360005b838110156200016a57818101518382015260200162000150565b50505050905090810190601f168015620001985780820380516001836020036101000a031916815260200191505b5060405250620001b391506301ffc9a760e01b90506200021d565b8151620001c8906006906020850190620002a2565b508051620001de906007906020840190620002a2565b50620001f16380ac58cd60e01b6200021d565b62000203635b5e139f60e01b6200021d565b6200021563780e9d6360e01b6200021d565b50506200033e565b6001600160e01b031980821614156200027d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002e557805160ff191683800117855562000315565b8280016001018555821562000315579182015b8281111562000315578251825591602001919060010190620002f8565b506200032392915062000327565b5090565b5b8082111562000323576000815560010162000328565b611993806200034e6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122089341c260a9643a1a12b051272c90a60af9c8caa6742e55036b08114d6b86f9564736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x1CE1 CODESIZE SUB DUP1 PUSH3 0x1CE1 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x58 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x6E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x89 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xB8 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x9E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xE6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE PUSH1 0x20 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x10A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x120 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x13B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0x16A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0x150 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0x198 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 MSTORE POP PUSH3 0x1B3 SWAP2 POP PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL SWAP1 POP PUSH3 0x21D JUMP JUMPDEST DUP2 MLOAD PUSH3 0x1C8 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x1DE SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2A2 JUMP JUMPDEST POP PUSH3 0x1F1 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x203 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST PUSH3 0x215 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0x21D JUMP JUMPDEST POP POP PUSH3 0x33E JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x27D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x2E5 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x315 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x315 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x315 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x2F8 JUMP JUMPDEST POP PUSH3 0x323 SWAP3 SWAP2 POP PUSH3 0x327 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x323 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x328 JUMP JUMPDEST PUSH2 0x1993 DUP1 PUSH3 0x34E PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x462 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x323 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x201 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x175 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH2 0x686 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x719 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x734 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74A JUMP JUMPDEST PUSH2 0x153 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x153 PUSH2 0x83B JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x89C JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x522 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1888 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP3 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x61B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x63C JUMPI POP PUSH2 0x63C DUP2 PUSH2 0x637 PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 PUSH2 0xCC1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x692 PUSH1 0x2 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x6A2 PUSH2 0xCBD JUMP JUMPDEST DUP3 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH2 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x710 SWAP1 DUP4 PUSH2 0xF2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x742 PUSH1 0x2 DUP5 PUSH2 0xF36 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1813 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x713 SWAP1 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x917 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x95B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9AC PUSH2 0xCBD JUMP JUMPDEST DUP4 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9F9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA0A DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xADA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xADA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xABD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x60 PUSH2 0xAEB PUSH2 0x772 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAFF JUMPI POP SWAP1 POP PUSH2 0x4AE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBC0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB3A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB1B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB82 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x4AE JUMP JUMPDEST DUP1 PUSH2 0xBCA DUP6 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBFC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBDD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 PUSH1 0x2 DUP4 PUSH2 0x1096 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCF6 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD45 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AF PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDC6 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDBB DUP5 PUSH2 0x549 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP PUSH2 0xDD6 DUP2 DUP6 PUSH2 0xC82 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDF1 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP4 DUP4 DUP4 PUSH2 0x681 JUMP JUMPDEST PUSH2 0xE91 PUSH1 0x0 DUP3 PUSH2 0xCC1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEB3 SWAP1 DUP3 PUSH2 0x10A6 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED6 SWAP1 DUP3 PUSH2 0x10B2 JUMP JUMPDEST POP PUSH2 0xEE3 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10BE JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF45 DUP7 DUP7 PUSH2 0x1138 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF74 DUP5 DUP5 DUP5 PUSH2 0xDDE JUMP JUMPDEST PUSH2 0xF80 DUP5 DUP5 DUP5 DUP5 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFE0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4AE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFE4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x108D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x106B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1048 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x14C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x150D JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1116 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1737 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x117C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1866 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x118D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x124E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1240 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1261 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1291 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x129D JUMPI POP PUSH1 0x1 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AB PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12B2 PUSH2 0xCBD JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1319 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1301 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1346 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x15AA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x14B9 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1430 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x144D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x147D JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x1505 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x713 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1572 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF62 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1585 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF62 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x15BE DUP6 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x160F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x164E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x16C5 DUP3 DUP3 DUP7 PUSH2 0x16D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16DF JUMPI POP DUP2 PUSH2 0xF62 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x5822122089341C260A9643A1A12B051272C90A60 0xAF SWAP13 DUP13 0xAA PUSH8 0x42E55036B08114D6 0xB8 PUSH16 0x9564736F6C634300060C003300000000 ", + "sourceMap": "571:16534:10:-:0;;;3577:369;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3577:369:10;;;;;;;;;;-1:-1:-1;3577:369:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3577:369:10;;;;;;;;;;-1:-1:-1;3577:369:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3577:369:10;;-1:-1:-1;768:40:1;;-1:-1:-1;;;;787:20:1;-1:-1:-1;768:18:1;:40::i;:::-;3651:13:10;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3674:17:10;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3779:40:10;-1:-1:-1;;;3779:18:10;:40::i;:::-;3829:49;-1:-1:-1;;;3829:18:10;:49::i;:::-;3888:51;-1:-1:-1;;;3888:18:10;:51::i;:::-;3577:369;;571:16534;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;571:16534:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;571:16534:10;;;-1:-1:-1;571:16534:10;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a264697066735822122089341c260a9643a1a12b051272c90a60af9c8caa6742e55036b08114d6b86f9564736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x462 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x323 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x201 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x175 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH2 0x686 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x719 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x734 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74A JUMP JUMPDEST PUSH2 0x153 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x153 PUSH2 0x83B JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x89C JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x522 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1888 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP3 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x61B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x63C JUMPI POP PUSH2 0x63C DUP2 PUSH2 0x637 PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 PUSH2 0xCC1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x692 PUSH1 0x2 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x6A2 PUSH2 0xCBD JUMP JUMPDEST DUP3 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH2 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x710 SWAP1 DUP4 PUSH2 0xF2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x742 PUSH1 0x2 DUP5 PUSH2 0xF36 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1813 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x713 SWAP1 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x917 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x95B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9AC PUSH2 0xCBD JUMP JUMPDEST DUP4 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9F9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA0A DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xADA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xADA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xABD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x60 PUSH2 0xAEB PUSH2 0x772 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAFF JUMPI POP SWAP1 POP PUSH2 0x4AE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBC0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB3A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB1B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB82 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x4AE JUMP JUMPDEST DUP1 PUSH2 0xBCA DUP6 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBFC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBDD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 PUSH1 0x2 DUP4 PUSH2 0x1096 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCF6 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD45 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AF PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDC6 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDBB DUP5 PUSH2 0x549 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP PUSH2 0xDD6 DUP2 DUP6 PUSH2 0xC82 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDF1 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP4 DUP4 DUP4 PUSH2 0x681 JUMP JUMPDEST PUSH2 0xE91 PUSH1 0x0 DUP3 PUSH2 0xCC1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEB3 SWAP1 DUP3 PUSH2 0x10A6 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED6 SWAP1 DUP3 PUSH2 0x10B2 JUMP JUMPDEST POP PUSH2 0xEE3 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10BE JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF45 DUP7 DUP7 PUSH2 0x1138 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF74 DUP5 DUP5 DUP5 PUSH2 0xDDE JUMP JUMPDEST PUSH2 0xF80 DUP5 DUP5 DUP5 DUP5 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFE0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4AE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFE4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x108D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x106B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1048 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x14C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x150D JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1116 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1737 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x117C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1866 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x118D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x124E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1240 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1261 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1291 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x129D JUMPI POP PUSH1 0x1 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AB PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12B2 PUSH2 0xCBD JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1319 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1301 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1346 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x15AA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x14B9 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1430 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x144D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x147D JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x1505 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x713 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1572 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF62 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1585 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF62 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x15BE DUP6 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x160F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x164E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x16C5 DUP3 DUP3 DUP7 PUSH2 0x16D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16DF JUMPI POP DUP2 PUSH2 0xF62 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x5822122089341C260A9643A1A12B051272C90A60 0xAF SWAP13 DUP13 0xAA PUSH8 0x42E55036B08114D6 0xB8 PUSH16 0x9564736F6C634300060C003300000000 ", + "sourceMap": "571:16534:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;4517:98:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7222:217;;;;;;;;;;;;;;;;-1:-1:-1;7222:217:10;;:::i;:::-;;;;-1:-1:-1;;;;;7222:217:10;;;;;;;;;;;;;;6766:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6766:395:10;;;;;;;;:::i;:::-;;6260:208;;;:::i;:::-;;;;;;;;;;;;;;;;8086:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8086:300:10;;;;;;;;;;;;;;;;;:::i;6029:160::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6029:160:10;;;;;;;;:::i;8452:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8452:149:10;;;;;;;;;;;;;;;;;:::i;6540:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6540:169:10;;:::i;4280:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4280:175:10;;:::i;5855:95::-;;;:::i;4005:218::-;;;;;;;;;;;;;;;;-1:-1:-1;4005:218:10;-1:-1:-1;;;;;4005:218:10;;:::i;4679:102::-;;;:::i;7506:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7506:290:10;;;;;;;;;;:::i;8667:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8667:282:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8667:282:10;;-1:-1:-1;8667:282:10;;-1:-1:-1;;;;;8667:282:10:i;4847:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4847:776:10;;:::i;7862:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7862:162:10;;;;;;;;;;:::i;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;;1050:4;1073:33;;;;;;;;;;;;;965:148;;;;:::o;4517:98:10:-;4603:5;4596:12;;;;;;;;-1:-1:-1;;4596:12:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4571:13;;4596:12;;4603:5;;4596:12;;4603:5;4596:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4517:98;:::o;7222:217::-;7298:7;7325:16;7333:7;7325;:16::i;:::-;7317:73;;;;-1:-1:-1;;;7317:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7408:24:10;;;;:15;:24;;;;;;-1:-1:-1;;;;;7408:24:10;;7222:217::o;6766:395::-;6846:13;6862:23;6877:7;6862:14;:23::i;:::-;6846:39;;6909:5;-1:-1:-1;;;;;6903:11:10;:2;-1:-1:-1;;;;;6903:11:10;;;6895:57;;;;-1:-1:-1;;;6895:57:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:5;-1:-1:-1;;;;;6971:21:10;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6971:21:10;;:69;;;;6996:44;7020:5;7027:12;:10;:12::i;:::-;6996:23;:44::i;:::-;6963:159;;;;-1:-1:-1;;;6963:159:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7133:21;7142:2;7146:7;7133:8;:21::i;:::-;6766:395;;;:::o;6260:208::-;6321:7;6440:21;:12;:19;:21::i;:::-;6433:28;;6260:208;:::o;8086:300::-;8245:41;8264:12;:10;:12::i;:::-;8278:7;8245:18;:41::i;:::-;8237:103;;;;-1:-1:-1;;;8237:103:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8351:28;8361:4;8367:2;8371:7;8351:9;:28::i;6029:160::-;-1:-1:-1;;;;;6152:20:10;;6126:7;6152:20;;;:13;:20;;;;;:30;;6176:5;6152:23;:30::i;:::-;6145:37;;6029:160;;;;;:::o;8452:149::-;8555:39;8572:4;8578:2;8582:7;8555:39;;;;;;;;;;;;:16;:39::i;6540:169::-;6615:7;;6656:22;:12;6672:5;6656:15;:22::i;:::-;-1:-1:-1;6634:44:10;6540:169;-1:-1:-1;;;6540:169:10:o;4280:175::-;4352:7;4378:70;4395:7;4378:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5855:95::-;5935:8;5928:15;;;;;;;;-1:-1:-1;;5928:15:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5903:13;;5928:15;;5935:8;;5928:15;;5935:8;5928:15;;;;;;;;;;;;;;;;;;;;;;;;4005:218;4077:7;-1:-1:-1;;;;;4104:19:10;;4096:74;;;;-1:-1:-1;;;4096:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4187:20:10;;;;;;:13;:20;;;;;:29;;:27;:29::i;4679:102::-;4767:7;4760:14;;;;;;;;-1:-1:-1;;4760:14:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4735:13;;4760:14;;4767:7;;4760:14;;4767:7;4760:14;;;;;;;;;;;;;;;;;;;;;;;;7506:290;7620:12;:10;:12::i;:::-;-1:-1:-1;;;;;7608:24:10;:8;-1:-1:-1;;;;;7608:24:10;;;7600:62;;;;;-1:-1:-1;;;7600:62:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;7718:8;7673:18;:32;7692:12;:10;:12::i;:::-;-1:-1:-1;;;;;7673:32:10;;;;;;;;;;;;;;;;;-1:-1:-1;7673:32:10;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7673:53:10;;;;;;;;;;;7756:12;:10;:12::i;:::-;-1:-1:-1;;;;;7741:48:10;;7780:8;7741:48;;;;;;;;;;;;;;;;;;;;7506:290;;:::o;8667:282::-;8798:41;8817:12;:10;:12::i;:::-;8831:7;8798:18;:41::i;:::-;8790:103;;;;-1:-1:-1;;;8790:103:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8903:39;8917:4;8923:2;8927:7;8936:5;8903:13;:39::i;:::-;8667:282;;;;:::o;4847:776::-;4920:13;4953:16;4961:7;4953;:16::i;:::-;4945:76;;;;-1:-1:-1;;;4945:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:19;;;;:10;:19;;;;;;;;;5032:45;;;;;;-1:-1:-1;;5032:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:45;;;5058:19;5032:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:18;5108:9;:7;:9::i;:::-;5087:30;;5196:4;5190:18;5212:1;5190:23;5186:70;;;-1:-1:-1;5236:9:10;-1:-1:-1;5229:16:10;;5186:70;5358:23;;:27;5354:106;;5432:4;5438:9;5415:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5415:33:10;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:48;;;;;;5354:106;5590:4;5596:18;:7;:16;:18::i;:::-;5573:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5573:42:10;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:57;;;;4847:776;;;:::o;7862:162::-;-1:-1:-1;;;;;7982:25:10;;;7959:4;7982:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7862:162::o;10383:125::-;10448:4;10471:30;:12;10493:7;10471:21;:30::i;598:104:16:-;685:10;598:104;:::o;16225:189:10:-;16299:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16299:29:10;-1:-1:-1;;;;;16299:29:10;;;;;;;;:24;;16352:23;16299:24;16352:14;:23::i;:::-;-1:-1:-1;;;;;16343:46:10;;;;;;;;;;;16225:189;;:::o;7820:121:17:-;7889:7;7915:19;7923:3;7915:7;:19::i;10666:351:10:-;10759:4;10783:16;10791:7;10783;:16::i;:::-;10775:73;;;;-1:-1:-1;;;10775:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10858:13;10874:23;10889:7;10874:14;:23::i;:::-;10858:39;;10926:5;-1:-1:-1;;;;;10915:16:10;:7;-1:-1:-1;;;;;10915:16:10;;:51;;;;10959:7;-1:-1:-1;;;;;10935:31:10;:20;10947:7;10935:11;:20::i;:::-;-1:-1:-1;;;;;10935:31:10;;10915:51;:94;;;;10970:39;10994:5;11001:7;10970:23;:39::i;:::-;10907:103;10666:351;-1:-1:-1;;;;10666:351:10:o;13707:584::-;13831:4;-1:-1:-1;;;;;13804:31:10;:23;13819:7;13804:14;:23::i;:::-;-1:-1:-1;;;;;13804:31:10;;13796:85;;;;-1:-1:-1;;;13796:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13917:16:10;;13909:65;;;;-1:-1:-1;;;13909:65:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13985:39;14006:4;14012:2;14016:7;13985:20;:39::i;:::-;14086:29;14103:1;14107:7;14086:8;:29::i;:::-;-1:-1:-1;;;;;14126:19:10;;;;;;:13;:19;;;;;:35;;14153:7;14126:26;:35::i;:::-;-1:-1:-1;;;;;;14171:17:10;;;;;;:13;:17;;;;;:30;;14193:7;14171:21;:30::i;:::-;-1:-1:-1;14212:29:10;:12;14229:7;14238:2;14212:16;:29::i;:::-;;14276:7;14272:2;-1:-1:-1;;;;;14257:27:10;14266:4;-1:-1:-1;;;;;14257:27:10;;;;;;;;;;;13707:584;;;:::o;9250:135:18:-;9321:7;9355:22;9359:3;9371:5;9355:3;:22::i;8269:233:17:-;8349:7;;;;8408:22;8412:3;8424:5;8408:3;:22::i;:::-;8377:53;;;;-1:-1:-1;8269:233:17;-1:-1:-1;;;;;8269:233:17:o;9522:211::-;9629:7;9679:44;9684:3;9704;9710:12;9679:4;:44::i;:::-;9671:53;-1:-1:-1;9522:211:17;;;;;;:::o;9811:269:10:-;9924:28;9934:4;9940:2;9944:7;9924:9;:28::i;:::-;9970:48;9993:4;9999:2;10003:7;10012:5;9970:22;:48::i;:::-;9962:111;;;;-1:-1:-1;;;9962:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210:725:19;266:13;483:10;479:51;;-1:-1:-1;509:10:19;;;;;;;;;;;;-1:-1:-1;;;509:10:19;;;;;;479:51;554:5;539:12;593:75;600:9;;593:75;;625:8;;655:2;647:10;;;;593:75;;;677:19;709:6;699:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;699:17:19;-1:-1:-1;769:5:19;;-1:-1:-1;677:39:19;-1:-1:-1;;;742:10:19;;784:114;791:9;;784:114;;859:2;852:4;:9;847:2;:14;834:29;;816:6;823:7;;;;;;;816:15;;;;;;;;;;;:47;-1:-1:-1;;;;;816:47:19;;;;;;;;-1:-1:-1;885:2:19;877:10;;;;784:114;;;-1:-1:-1;921:6:19;210:725;-1:-1:-1;;;;210:725:19:o;7588:149:17:-;7672:4;7695:35;7705:3;7725;7695:9;:35::i;4491:108::-;4573:19;;4491:108::o;8365:135:18:-;8435:4;8458:35;8466:3;8486:5;8458:7;:35::i;8068:129::-;8135:4;8158:32;8163:3;8183:5;8158:4;:32::i;7027:183:17:-;7116:4;7139:64;7144:3;7164;-1:-1:-1;;;;;7178:23:17;;7139:4;:64::i;4452:201:18:-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:18;;;;-1:-1:-1;;;4538:73:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;4942:274:17:-;5045:19;;5009:7;;;;5045:27;-1:-1:-1;5037:74:17;;;;-1:-1:-1;;;5037:74:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5122:22;5147:3;:12;;5160:5;5147:19;;;;;;;;;;;;;;;;;;5122:44;;5184:5;:10;;;5196:5;:12;;;5176:33;;;;;4942:274;;;;;:::o;6403:315::-;6497:7;6535:17;;;:12;;;:17;;;;;;6585:12;6570:13;6562:36;;;;-1:-1:-1;;;6562:36:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:3;:12;;6675:1;6664:8;:12;6651:26;;;;;;;;;;;;;;;;;;:33;;;6644:40;;;6403:315;;;;;:::o;15524:589:10:-;15644:4;15669:15;:2;-1:-1:-1;;;;;15669:13:10;;:15::i;:::-;15664:58;;-1:-1:-1;15707:4:10;15700:11;;15664:58;15731:23;15757:246;-1:-1:-1;;;15868:12:10;:10;:12::i;:::-;15894:4;15912:7;15933:5;15773:175;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;;;;;15757:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15757:15:10;;;:246;:15;:246::i;:::-;15731:272;;16013:13;16040:10;16029:32;;;;;;;;;;;;;;;-1:-1:-1;16029:32:10;-1:-1:-1;;;;;;16079:26:10;-1:-1:-1;;;16079:26:10;;-1:-1:-1;;;15524:589:10;;;;;;:::o;4278:123:17:-;4349:4;4372:17;;;:12;;;;;:17;;;;;;:22;;;4278:123::o;2212:1512:18:-;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:18;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;;1640:404;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:18;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:18;2015:12;;1836:678:17;1912:4;2045:17;;;:12;;;:17;;;;;;2077:13;2073:435;;-1:-1:-1;;2161:38:17;;;;;;;;;;;;;;;;;;2143:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2355:19;;2335:17;;;:12;;;:17;;;;;;;:39;2388:11;;2073:435;2466:5;2430:3;:12;;2454:1;2443:8;:12;2430:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2492:5;2485:12;;;;;726:413:15;1086:20;1124:8;;;726:413::o;3581:193::-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3684;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;-1:-1:-1;;;4850:60:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:15;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:33:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:15:o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:15;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7765:20;;-1:-1:-1;;;7765:20:15;;;;;;;;;;;;;;;;;7772:12;;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "baseURI()": "6c0360eb", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "IERC721": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol": { + "IERC721Enumerable": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol": { + "IERC721Metadata": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "balance", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "_approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenURI(uint256)": "c87b56dd", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "IERC721Receiver": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC721Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "onERC721Received(address,address,uint256,bytes)": "150b7a02" + } + } + } + }, + "@openzeppelin/contracts/utils/Address.sol": { + "Address": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ccfd6fd57b84258d9d7208fb0633d819ed9b25da91dfd0a18e11c3cdeae554c64736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xCF 0xD6 REVERT JUMPI 0xB8 TIMESTAMP PC 0xD9 0xD7 KECCAK256 DUP16 0xB0 PUSH4 0x3D819ED9 0xB2 0x5D 0xA9 SAR REVERT EXP XOR 0xE1 SHR EXTCODECOPY 0xDE 0xAE SSTORE 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "134:7684:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208ccfd6fd57b84258d9d7208fb0633d819ed9b25da91dfd0a18e11c3cdeae554c64736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP13 0xCF 0xD6 REVERT JUMPI 0xB8 TIMESTAMP PC 0xD9 0xD7 KECCAK256 DUP16 0xB0 PUSH4 0x3D819ED9 0xB2 0x5D 0xA9 SAR REVERT EXP XOR 0xE1 SHR EXTCODECOPY 0xDE 0xAE SSTORE 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "134:7684:15:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/utils/Context.sol": { + "Context": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/utils/EnumerableMap.sol": { + "EnumerableMap": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0x24 DUP6 RETURN PUSH31 0x725817B9F9EF07330C301E0C0BB6D026D1E8B935CF1F191CB8317364736F6C PUSH4 0x4300060C STOP CALLER ", + "sourceMap": "772:8963:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220542485f37e725817b9f9ef07330c301e0c0bb6d026d1e8b935cf1f191cb8317364736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLOAD 0x24 DUP6 RETURN PUSH31 0x725817B9F9EF07330C301E0C0BB6D026D1E8B935CF1F191CB8317364736F6C PUSH4 0x4300060C STOP CALLER ", + "sourceMap": "772:8963:17:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/utils/EnumerableSet.sol": { + "EnumerableSet": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 BYTE 0x4D SGT 0xD2 CALLDATALOAD 0xB4 DUP5 DUP12 TIMESTAMP PUSH14 0xDC7DF9C0545FCD7927A94773117E 0xB5 NUMBER 0xB5 BYTE SHR SIGNEXTEND SUB PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "753:8634:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220891a4d13d235b4848b426ddc7df9c0545fcd7927a94773117eb543b51a1c0b0364736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 DUP10 BYTE 0x4D SGT 0xD2 CALLDATALOAD 0xB4 DUP5 DUP12 TIMESTAMP PUSH14 0xDC7DF9C0545FCD7927A94773117E 0xB5 NUMBER 0xB5 BYTE SHR SIGNEXTEND SUB PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "753:8634:18:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "Strings": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972e422ae8e5233065d4c58221b58fadf7de31737830c58d58d114673b5d7f8c64736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0x2E TIMESTAMP 0x2A 0xE8 0xE5 0x23 ADDRESS PUSH6 0xD4C58221B58F 0xAD 0xF7 0xDE BALANCE PUSH20 0x7830C58D58D114673B5D7F8C64736F6C63430006 0xC STOP CALLER ", + "sourceMap": "101:836:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220972e422ae8e5233065d4c58221b58fadf7de31737830c58d58d114673b5d7f8c64736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP8 0x2E TIMESTAMP 0x2A 0xE8 0xE5 0x23 ADDRESS PUSH6 0xD4C58221B58F 0xAD 0xF7 0xDE BALANCE PUSH20 0x7830C58D58D114673B5D7F8C64736F6C63430006 0xC STOP CALLER ", + "sourceMap": "101:836:19:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "contracts/Bank1155.sol": { + "Bank1155": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Password", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "CLAIM_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PASSWORD_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "psw", + "type": "string" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "password", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokenUserBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506100216301ffc9a760e01b610155565b610031630271189760e51b610155565b604080518082018252600881526742616e6b3131353560c01b602091820152815180830183526001808252603160f81b9183019190915282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f47255516b75e0b6b5913e302fe3b8ffecc7740facbb54a27d4a0a2dce11d4d4c818501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528451808303909101815260c09091019093528251929091019190912090557f242444289e23ce6db820d71eb5a872b74ab417877a6bc4b88ff9c0c982f42aa86002557fe1a52c71772aeec2cad9cac0dbd56513ea655223347c5201ca618b6d314300ec6003556101d9565b6001600160e01b031980821614156101b4576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6111f0806101e86000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636b0509b1116100715780636b0509b1146102b257806390d25074146102ba5780639e317f12146102f4578063bc197c8114610311578063c2d7ccdb14610455578063f23a6e611461045d576100b4565b806301ffc9a7146100b95780631d570d04146100f45780633644e515146101505780633a84d0511461016a5780634aa57216146102425780634b2084e314610278575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b0319166104f0565b604080519115158252519081900360200190f35b61014e600480360361010081101561010b57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060ff60a0820135169060c08101359060e0013561050f565b005b610158610893565b60408051918252519081900360200190f35b61014e600480360361010081101561018157600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156101ba57600080fd5b8201836020820111156101cc57600080fd5b803590602001918460018302840111600160201b831117156101ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505060ff602083013516916040810135915060600135610899565b6101586004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359160409091013516610c6f565b61014e6004803603608081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610c92565b610158610e0b565b61014e600480360360808110156102d057600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610e11565b6100e06004803603602081101561030a57600080fd5b5035610f00565b610438600480360360a081101561032757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561035a57600080fd5b82018360208201111561036c57600080fd5b803590602001918460208302840111600160201b8311171561038d57600080fd5b919390929091602081019035600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111600160201b831117156103dd57600080fd5b919390929091602081019035600160201b8111156103fa57600080fd5b82018360208201111561040c57600080fd5b803590602001918460018302840111600160201b8311171561042d57600080fd5b509092509050610f15565b604080516001600160e01b03199092168252519081900360200190f35b610158611030565b610438600480360360a081101561047357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460018302840111600160201b831117156104e557600080fd5b509092509050611036565b6001600160e01b03191660009081526020819052604090205460ff1690565b4284101561054e5760405162461bcd60e51b81526004018080602001828103825260218152602001806111316021913960400191505060405180910390fd5b600154600254604080516020808201939093526001600160a01b03808d1682840152606082018c9052808b166080830152891660a082015260c08082018990528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220600081815260049092529190205460ff161561063f576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b313135353a3a636c61696d3a20657870697265642064696765737400604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561069b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106d15750876001600160a01b0316816001600160a01b0316145b61070c5760405162461bcd60e51b81526004018080602001828103825260228152602001806111996022913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610788576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e845282528083208d8616845290915280822080546000190190558051637921219560e11b8152306004820152938b166024850152604484018d90526001606485015260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50505050876001600160a01b0316898b6001600160a01b03167f47e33510b7d5f9240a1e4ceef4d03aeb1042bc91766bc62320cbda8f318e7c628a60405180826001600160a01b0316815260200191505060405180910390a450505050505050505050565b60015481565b428410156108d85760405162461bcd60e51b815260040180806020018281038252602481526020018061110d6024913960400191505060405180910390fd5b60006001546003548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001858152602001846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561095557818101518382015260200161093d565b50505050905090810190601f1680156109825780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600490925299902054989950505060ff909616159550610a2c9450505050505760405162461bcd60e51b81526004018080602001828103825260228152602001806111526022913960400191505060405180910390fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610abe5750876001600160a01b0316816001600160a01b0316145b610af95760405162461bcd60e51b81526004018080602001828103825260258152602001806111746025913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610b75576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e84528252808320948d16835293905282812080546000190190558251637921219560e11b8152306004820152336024820152604481018d90526001606482015260a0608482015260a481018290529251919263f242432a9260e4808301939282900301818387803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50506040805133815290516001600160a01b03808d1694508d93508e16917f1be3f8b8171458dca0bd407525862f7f9eb66cda4eedc1e54610049e29219066919081900360200190a450505050505050505050565b600560209081526000938452604080852082529284528284209052825290205481565b6001600160a01b03841660009081526005602090815260408083208684528252808320338452909152902054811115610d12576040805162461bcd60e51b815260206004820152601960248201527f42616e6b313135353a3a77697468647261773a206f68206e6f00000000000000604482015290519081900360640190fd5b6001600160a01b0384811660008181526005602090815260408083208884528252808320338452909152808220805486900390558051637921219560e11b81523060048201529386166024850152604484018790526064840185905260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b158015610da157600080fd5b505af1158015610db5573d6000803e3d6000fd5b50505050816001600160a01b031683856001600160a01b03167f457f950b75085c30ff780acd57bde642ff1316cc4aad9f286af2c1ffc4163a78846040518082815260200191505060405180910390a450505050565b60025481565b60408051637921219560e11b8152336004820152306024820152604481018590526064810183905260a06084820152600060a4820181905291516001600160a01b0387169263f242432a9260e4808201939182900301818387803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600560209081526040808320888452825280832094871680845294825291829020805486019055815185815291518793927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a450505050565b60046020526000908152604090205460ff1681565b6000808215610f6257610f5d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b610f64565b885b905060005b87811015611019576000898983818110610f7f57fe5b9050602002013590506000888884818110610f9657fe5b33600081815260056020908152604080832089845282528083206001600160a01b038c16808552908352928190208054958302979097013594850190965585518481529551939650909487945091927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b9281900390910190a45050600101610f69565b5063bc197c8160e01b9a9950505050505050505050565b60035481565b60008082156110835761107e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b611085565b865b3360008181526005602090815260408083208b845282528083206001600160a01b0386168085529083529281902080548b01905580518a8152905194955091938a93927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a45063f23a6e6160e01b979650505050505050565b601401519056fe42616e6b313135353a3a70617373776f72643a206578706972656420646561646c696e6542616e6b313135353a3a636c61696d3a206578706972656420646561646c696e6542616e6b313135353a3a70617373776f72643a20657870697265642064696765737442616e6b313135353a3a70617373776f72643a20696e76616c6964207369676e617475726542616e6b313135353a3a636c61696d3a20696e76616c6964207369676e6174757265a2646970667358221220d8bf1c9e0edb7f5a8e70f071a42bfad92360d055fa703e942aa7aadc5009ebff64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x21 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH2 0x155 JUMP JUMPDEST PUSH2 0x31 PUSH4 0x2711897 PUSH1 0xE5 SHL PUSH2 0x155 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x8 DUP2 MSTORE PUSH8 0x42616E6B31313535 PUSH1 0xC0 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP5 ADD MSTORE PUSH32 0x47255516B75E0B6B5913E302FE3B8FFECC7740FACBB54A27D4A0A2DCE11D4D4C DUP2 DUP6 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 SWAP1 SSTORE PUSH32 0x242444289E23CE6DB820D71EB5A872B74AB417877A6BC4B88FF9C0C982F42AA8 PUSH1 0x2 SSTORE PUSH32 0xE1A52C71772AEEC2CAD9CAC0DBD56513EA655223347C5201CA618B6D314300EC PUSH1 0x3 SSTORE PUSH2 0x1D9 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH2 0x1B4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x11F0 DUP1 PUSH2 0x1E8 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B0509B1 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6B0509B1 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x90D25074 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x9E317F12 EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xC2D7CCDB EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x45D JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x1D570D04 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x3A84D051 EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x4AA57216 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x4B2084E3 EQ PUSH2 0x278 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x50F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x158 PUSH2 0x893 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP PUSH1 0xFF PUSH1 0x20 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x158 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xC92 JUMP JUMPDEST PUSH2 0x158 PUSH2 0xE0B JUMP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF15 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x158 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1036 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x54E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1131 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP13 SWAP1 MSTORE DUP1 DUP12 AND PUSH1 0x80 DUP4 ADD MSTORE DUP10 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x122 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x142 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x63F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B313135353A3A636C61696D3A20657870697265642064696765737400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x6D1 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x70C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1199 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x42616E6B313135353A3A636C61696D3A206F68206E6F PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP14 DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP12 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP14 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP6 ADD MSTORE PUSH1 0xA4 DUP5 ADD DUP3 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47E33510B7D5F9240A1E4CEEF4D03AEB1042BC91766BC62320CBDA8F318E7C62 DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x110D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x955 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x93D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x982 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL DUP3 DUP6 ADD MSTORE PUSH1 0x22 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE PUSH1 0x42 DUP1 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP13 ADD DUP13 MSTORE PUSH1 0x62 SWAP1 SWAP3 ADD DUP2 MSTORE DUP11 MLOAD SWAP11 DUP3 ADD SWAP11 SWAP1 SWAP11 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE SWAP10 SWAP1 KECCAK256 SLOAD SWAP9 SWAP10 POP POP POP PUSH1 0xFF SWAP1 SWAP7 AND ISZERO SWAP6 POP PUSH2 0xA2C SWAP5 POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1152 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA88 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xABE JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1174 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 GT ISZERO PUSH2 0xB75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x42616E6B313135353A3A636C61696D3A206F68206E6F PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP14 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP3 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP14 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND SWAP5 POP DUP14 SWAP4 POP DUP15 AND SWAP2 PUSH32 0x1BE3F8B8171458DCA0BD407525862F7F9EB66CDA4EEDC1E54610049E29219066 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B313135353A3A77697468647261773A206F68206E6F00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP7 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP6 ADD MSTORE PUSH1 0xA4 DUP5 ADD DUP3 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x457F950B75085C30FF780ACD57BDE642FF1316CC4AAD9F286AF2C1FFC4163A78 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF5D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1105 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST DUP9 JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1019 JUMPI PUSH1 0x0 DUP10 DUP10 DUP4 DUP2 DUP2 LT PUSH2 0xF7F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0xF96 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP4 MUL SWAP8 SWAP1 SWAP8 ADD CALLDATALOAD SWAP5 DUP6 ADD SWAP1 SWAP7 SSTORE DUP6 MLOAD DUP5 DUP2 MSTORE SWAP6 MLOAD SWAP4 SWAP7 POP SWAP1 SWAP5 DUP8 SWAP5 POP SWAP2 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP PUSH1 0x1 ADD PUSH2 0xF69 JUMP JUMPDEST POP PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x1083 JUMPI PUSH2 0x107E DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1105 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1085 JUMP JUMPDEST DUP7 JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP12 ADD SWAP1 SSTORE DUP1 MLOAD DUP11 DUP2 MSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 DUP11 SWAP4 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 ADD MLOAD SWAP1 JUMP INVALID TIMESTAMP PUSH2 0x6E6B BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE GASPRICE PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6561646C69 PUSH15 0x6542616E6B313135353A3A636C6169 PUSH14 0x3A20657870697265642064656164 PUSH13 0x696E6542616E6B313135353A3A PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6967657374 TIMESTAMP PUSH2 0x6E6B BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE GASPRICE PUSH17 0x617373776F72643A20696E76616C696420 PUSH20 0x69676E617475726542616E6B313135353A3A636C PUSH2 0x696D GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265A2646970667358221220 0xD8 0xBF SHR SWAP15 0xE 0xDB PUSH32 0x5A8E70F071A42BFAD92360D055FA703E942AA7AADC5009EBFF64736F6C634300 MOD 0xC STOP CALLER ", + "sourceMap": "188:7143:20:-:0;;;852:707;;;;;;;;;-1:-1:-1;768:40:1;-1:-1:-1;;;768:18:1;:40::i;:::-;282:170:5;-1:-1:-1;;;282:18:5;:170::i;:::-;1160:17:20;;;;;;;;;;;-1:-1:-1;;;1160:17:20;;;;;1206:10;;;;;;;;;;;-1:-1:-1;;;1206:10:20;;;;;;;1009:278;;1037:95;1009:278;;;;1150:28;1009:278;;;;1196:21;1009:278;;;;939:9;1009:278;;;;1268:4;1009:278;;;;;;;;;;;;;;;;;;;;;;;;;986:311;;;;;;;;;;967:330;;1325:105;1308:14;:122;1460:92;1440:17;:112;188:7143;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;188:7143:20:-;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100b45760003560e01c80636b0509b1116100715780636b0509b1146102b257806390d25074146102ba5780639e317f12146102f4578063bc197c8114610311578063c2d7ccdb14610455578063f23a6e611461045d576100b4565b806301ffc9a7146100b95780631d570d04146100f45780633644e515146101505780633a84d0511461016a5780634aa57216146102425780634b2084e314610278575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b0319166104f0565b604080519115158252519081900360200190f35b61014e600480360361010081101561010b57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060ff60a0820135169060c08101359060e0013561050f565b005b610158610893565b60408051918252519081900360200190f35b61014e600480360361010081101561018157600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156101ba57600080fd5b8201836020820111156101cc57600080fd5b803590602001918460018302840111600160201b831117156101ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505060ff602083013516916040810135915060600135610899565b6101586004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359160409091013516610c6f565b61014e6004803603608081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610c92565b610158610e0b565b61014e600480360360808110156102d057600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610e11565b6100e06004803603602081101561030a57600080fd5b5035610f00565b610438600480360360a081101561032757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561035a57600080fd5b82018360208201111561036c57600080fd5b803590602001918460208302840111600160201b8311171561038d57600080fd5b919390929091602081019035600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111600160201b831117156103dd57600080fd5b919390929091602081019035600160201b8111156103fa57600080fd5b82018360208201111561040c57600080fd5b803590602001918460018302840111600160201b8311171561042d57600080fd5b509092509050610f15565b604080516001600160e01b03199092168252519081900360200190f35b610158611030565b610438600480360360a081101561047357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460018302840111600160201b831117156104e557600080fd5b509092509050611036565b6001600160e01b03191660009081526020819052604090205460ff1690565b4284101561054e5760405162461bcd60e51b81526004018080602001828103825260218152602001806111316021913960400191505060405180910390fd5b600154600254604080516020808201939093526001600160a01b03808d1682840152606082018c9052808b166080830152891660a082015260c08082018990528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220600081815260049092529190205460ff161561063f576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b313135353a3a636c61696d3a20657870697265642064696765737400604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561069b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106d15750876001600160a01b0316816001600160a01b0316145b61070c5760405162461bcd60e51b81526004018080602001828103825260228152602001806111996022913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610788576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e845282528083208d8616845290915280822080546000190190558051637921219560e11b8152306004820152938b166024850152604484018d90526001606485015260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50505050876001600160a01b0316898b6001600160a01b03167f47e33510b7d5f9240a1e4ceef4d03aeb1042bc91766bc62320cbda8f318e7c628a60405180826001600160a01b0316815260200191505060405180910390a450505050505050505050565b60015481565b428410156108d85760405162461bcd60e51b815260040180806020018281038252602481526020018061110d6024913960400191505060405180910390fd5b60006001546003548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001858152602001846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561095557818101518382015260200161093d565b50505050905090810190601f1680156109825780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600490925299902054989950505060ff909616159550610a2c9450505050505760405162461bcd60e51b81526004018080602001828103825260228152602001806111526022913960400191505060405180910390fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610abe5750876001600160a01b0316816001600160a01b0316145b610af95760405162461bcd60e51b81526004018080602001828103825260258152602001806111746025913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610b75576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e84528252808320948d16835293905282812080546000190190558251637921219560e11b8152306004820152336024820152604481018d90526001606482015260a0608482015260a481018290529251919263f242432a9260e4808301939282900301818387803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50506040805133815290516001600160a01b03808d1694508d93508e16917f1be3f8b8171458dca0bd407525862f7f9eb66cda4eedc1e54610049e29219066919081900360200190a450505050505050505050565b600560209081526000938452604080852082529284528284209052825290205481565b6001600160a01b03841660009081526005602090815260408083208684528252808320338452909152902054811115610d12576040805162461bcd60e51b815260206004820152601960248201527f42616e6b313135353a3a77697468647261773a206f68206e6f00000000000000604482015290519081900360640190fd5b6001600160a01b0384811660008181526005602090815260408083208884528252808320338452909152808220805486900390558051637921219560e11b81523060048201529386166024850152604484018790526064840185905260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b158015610da157600080fd5b505af1158015610db5573d6000803e3d6000fd5b50505050816001600160a01b031683856001600160a01b03167f457f950b75085c30ff780acd57bde642ff1316cc4aad9f286af2c1ffc4163a78846040518082815260200191505060405180910390a450505050565b60025481565b60408051637921219560e11b8152336004820152306024820152604481018590526064810183905260a06084820152600060a4820181905291516001600160a01b0387169263f242432a9260e4808201939182900301818387803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600560209081526040808320888452825280832094871680845294825291829020805486019055815185815291518793927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a450505050565b60046020526000908152604090205460ff1681565b6000808215610f6257610f5d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b610f64565b885b905060005b87811015611019576000898983818110610f7f57fe5b9050602002013590506000888884818110610f9657fe5b33600081815260056020908152604080832089845282528083206001600160a01b038c16808552908352928190208054958302979097013594850190965585518481529551939650909487945091927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b9281900390910190a45050600101610f69565b5063bc197c8160e01b9a9950505050505050505050565b60035481565b60008082156110835761107e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b611085565b865b3360008181526005602090815260408083208b845282528083206001600160a01b0386168085529083529281902080548b01905580518a8152905194955091938a93927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a45063f23a6e6160e01b979650505050505050565b601401519056fe42616e6b313135353a3a70617373776f72643a206578706972656420646561646c696e6542616e6b313135353a3a636c61696d3a206578706972656420646561646c696e6542616e6b313135353a3a70617373776f72643a20657870697265642064696765737442616e6b313135353a3a70617373776f72643a20696e76616c6964207369676e617475726542616e6b313135353a3a636c61696d3a20696e76616c6964207369676e6174757265a2646970667358221220d8bf1c9e0edb7f5a8e70f071a42bfad92360d055fa703e942aa7aadc5009ebff64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xB4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6B0509B1 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x6B0509B1 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0x90D25074 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0x9E317F12 EQ PUSH2 0x2F4 JUMPI DUP1 PUSH4 0xBC197C81 EQ PUSH2 0x311 JUMPI DUP1 PUSH4 0xC2D7CCDB EQ PUSH2 0x455 JUMPI DUP1 PUSH4 0xF23A6E61 EQ PUSH2 0x45D JUMPI PUSH2 0xB4 JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xB9 JUMPI DUP1 PUSH4 0x1D570D04 EQ PUSH2 0xF4 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x150 JUMPI DUP1 PUSH4 0x3A84D051 EQ PUSH2 0x16A JUMPI DUP1 PUSH4 0x4AA57216 EQ PUSH2 0x242 JUMPI DUP1 PUSH4 0x4B2084E3 EQ PUSH2 0x278 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x4F0 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x10B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x50F JUMP JUMPDEST STOP JUMPDEST PUSH2 0x158 PUSH2 0x893 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x181 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP3 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP1 SWAP3 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1BA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP PUSH1 0xFF PUSH1 0x20 DUP4 ADD CALLDATALOAD AND SWAP2 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP2 POP PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x899 JUMP JUMPDEST PUSH2 0x158 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x258 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0xC6F JUMP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x28E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xC92 JUMP JUMPDEST PUSH2 0x158 PUSH2 0xE0B JUMP JUMPDEST PUSH2 0x14E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0xE11 JUMP JUMPDEST PUSH2 0xE0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x30A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0xF00 JUMP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x327 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x35A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x36C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x38D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3DD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x40C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x42D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0xF15 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x158 PUSH2 0x1030 JUMP JUMPDEST PUSH2 0x438 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x473 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x1036 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x54E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1131 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD DUP13 SWAP1 MSTORE DUP1 DUP12 AND PUSH1 0x80 DUP4 ADD MSTORE DUP10 AND PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x122 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x142 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0x63F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B313135353A3A636C61696D3A20657870697265642064696765737400 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x69B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x6D1 JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x70C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1199 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 GT ISZERO PUSH2 0x788 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x42616E6B313135353A3A636C61696D3A206F68206E6F PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 DUP14 DUP7 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP12 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP14 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP6 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP6 ADD MSTORE PUSH1 0xA4 DUP5 ADD DUP3 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x81A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x82E JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP10 DUP12 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x47E33510B7D5F9240A1E4CEEF4D03AEB1042BC91766BC62320CBDA8F318E7C62 DUP11 PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x8D8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x110D PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x955 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x93D JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x982 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL DUP3 DUP6 ADD MSTORE PUSH1 0x22 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE PUSH1 0x42 DUP1 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP13 ADD DUP13 MSTORE PUSH1 0x62 SWAP1 SWAP3 ADD DUP2 MSTORE DUP11 MLOAD SWAP11 DUP3 ADD SWAP11 SWAP1 SWAP11 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 SWAP1 SWAP3 MSTORE SWAP10 SWAP1 KECCAK256 SLOAD SWAP9 SWAP10 POP POP POP PUSH1 0xFF SWAP1 SWAP7 AND ISZERO SWAP6 POP PUSH2 0xA2C SWAP5 POP POP POP POP POP JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1152 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xA88 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xABE JUMPI POP DUP8 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xAF9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1174 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP14 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 DUP13 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD PUSH1 0x1 GT ISZERO PUSH2 0xB75 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x42616E6B313135353A3A636C61696D3A206F68206E6F PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP15 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP14 AND DUP4 MSTORE SWAP4 SWAP1 MSTORE DUP3 DUP2 KECCAK256 DUP1 SLOAD PUSH1 0x0 NOT ADD SWAP1 SSTORE DUP3 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE CALLER PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP14 SWAP1 MSTORE PUSH1 0x1 PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0xA4 DUP2 ADD DUP3 SWAP1 MSTORE SWAP3 MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC06 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC1A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD CALLER DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP14 AND SWAP5 POP DUP14 SWAP4 POP DUP15 AND SWAP2 PUSH32 0x1BE3F8B8171458DCA0BD407525862F7F9EB66CDA4EEDC1E54610049E29219066 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP4 DUP5 MSTORE PUSH1 0x40 DUP1 DUP6 KECCAK256 DUP3 MSTORE SWAP3 DUP5 MSTORE DUP3 DUP5 KECCAK256 SWAP1 MSTORE DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP7 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0xD12 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B313135353A3A77697468647261773A206F68206E6F00000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP7 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP4 DUP7 AND PUSH1 0x24 DUP6 ADD MSTORE PUSH1 0x44 DUP5 ADD DUP8 SWAP1 MSTORE PUSH1 0x64 DUP5 ADD DUP6 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP6 ADD MSTORE PUSH1 0xA4 DUP5 ADD DUP3 SWAP1 MSTORE MLOAD SWAP2 SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xDA1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xDB5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x457F950B75085C30FF780ACD57BDE642FF1316CC4AAD9F286AF2C1FFC4163A78 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x79212195 PUSH1 0xE1 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP6 SWAP1 MSTORE PUSH1 0x64 DUP2 ADD DUP4 SWAP1 MSTORE PUSH1 0xA0 PUSH1 0x84 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0xA4 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND SWAP3 PUSH4 0xF242432A SWAP3 PUSH1 0xE4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE78 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE8C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP9 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD DUP8 SWAP4 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0xF62 JUMPI PUSH2 0xF5D DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1105 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF64 JUMP JUMPDEST DUP9 JUMPDEST SWAP1 POP PUSH1 0x0 JUMPDEST DUP8 DUP2 LT ISZERO PUSH2 0x1019 JUMPI PUSH1 0x0 DUP10 DUP10 DUP4 DUP2 DUP2 LT PUSH2 0xF7F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD CALLDATALOAD SWAP1 POP PUSH1 0x0 DUP9 DUP9 DUP5 DUP2 DUP2 LT PUSH2 0xF96 JUMPI INVALID JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP13 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD SWAP6 DUP4 MUL SWAP8 SWAP1 SWAP8 ADD CALLDATALOAD SWAP5 DUP6 ADD SWAP1 SWAP7 SSTORE DUP6 MLOAD DUP5 DUP2 MSTORE SWAP6 MLOAD SWAP4 SWAP7 POP SWAP1 SWAP5 DUP8 SWAP5 POP SWAP2 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP PUSH1 0x1 ADD PUSH2 0xF69 JUMP JUMPDEST POP PUSH4 0xBC197C81 PUSH1 0xE0 SHL SWAP11 SWAP10 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 ISZERO PUSH2 0x1083 JUMPI PUSH2 0x107E DUP5 DUP5 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP PUSH2 0x1105 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1085 JUMP JUMPDEST DUP7 JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP12 DUP5 MSTORE DUP3 MSTORE DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE SWAP3 DUP2 SWAP1 KECCAK256 DUP1 SLOAD DUP12 ADD SWAP1 SSTORE DUP1 MLOAD DUP11 DUP2 MSTORE SWAP1 MLOAD SWAP5 SWAP6 POP SWAP2 SWAP4 DUP11 SWAP4 SWAP3 PUSH32 0xD2F8022F659FD9C8C558F30C00FD5EE7038F7CB56DA45095C3E0E7D48B3E0C4B SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 POP PUSH4 0xF23A6E61 PUSH1 0xE0 SHL SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x14 ADD MLOAD SWAP1 JUMP INVALID TIMESTAMP PUSH2 0x6E6B BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE GASPRICE PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6561646C69 PUSH15 0x6542616E6B313135353A3A636C6169 PUSH14 0x3A20657870697265642064656164 PUSH13 0x696E6542616E6B313135353A3A PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6967657374 TIMESTAMP PUSH2 0x6E6B BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE GASPRICE PUSH17 0x617373776F72643A20696E76616C696420 PUSH20 0x69676E617475726542616E6B313135353A3A636C PUSH2 0x696D GASPRICE KECCAK256 PUSH10 0x6E76616C696420736967 PUSH15 0x6174757265A2646970667358221220 0xD8 0xBF SHR SWAP15 0xE 0xDB PUSH32 0x5A8E70F071A42BFAD92360D055FA703E942AA7AADC5009EBFF64736F6C634300 MOD 0xC STOP CALLER ", + "sourceMap": "188:7143:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;5129:1003:20;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5129:1003:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;232:31;;;:::i;:::-;;;;;;;;;;;;;;;;6139:1025;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6139:1025:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6139:1025:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6139:1025:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6139:1025:20;;-1:-1:-1;;6139:1025:20;;;-1:-1:-1;;6139:1025:20;;;;;;;;;;;;-1:-1:-1;6139:1025:20;;;;:::i;386:85::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;386:85:20;;;;;;;;;;;;;;;;;:::i;1876:412::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1876:412:20;;;;;;;;;;;;;;;;;;;;:::i;269:29::-;;;:::i;1566:303::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1566:303:20;;;;;;;;;;;;;;;;;;;;:::i;342:38::-;;;;;;;;;;;;;;;;-1:-1:-1;342:38:20;;:::i;4535:587::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4535:587:20;;;;;;;;;;-1:-1:-1;4535:587:20;;-1:-1:-1;4535:587:20;-1:-1:-1;4535:587:20;:::i;:::-;;;;-1:-1:-1;;;;;;4535:587:20;;;;;;;;;;;;;;304:32;;;:::i;3116:430::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3116:430:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3116:430:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3116:430:20;;;;;;;;;;-1:-1:-1;3116:430:20;;-1:-1:-1;3116:430:20;-1:-1:-1;3116:430:20;:::i;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;1050:4;1073:33;;;;;;;;;;;;;;965:148::o;5129:1003:20:-;5285:15;5273:8;:27;;5265:73;;;;-1:-1:-1;;;5265:73:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5450:16;;5505:14;;5494:63;;;;;;;;;;;-1:-1:-1;;;;;5494:63:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5484:74;;;;;;-1:-1:-1;;;5388:184:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5365:217;;;;;;;;;5348:14;5601;;;:6;:14;;;;;;;;;5600:15;5592:59;;;;;-1:-1:-1;;;5592:59:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;5661:24;5688:26;5698:6;5706:1;5709;5712;5688:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5688:26:20;;-1:-1:-1;;5688:26:20;;;-1:-1:-1;;;;;;;5732:30:20;;;;;;:59;;;5786:5;-1:-1:-1;;;;;5766:25:20;:16;-1:-1:-1;;;;;5766:25:20;;5732:59;5724:106;;;;-1:-1:-1;;;5724:106:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5849:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;:34;;;;;;;;;;5887:1;-1:-1:-1;5849:39:20;5841:74;;;;;-1:-1:-1;;;5841:74:20;;;;;;;;;;;;-1:-1:-1;;;5841:74:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;5962:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;:34;;;;;;;;;;;;;-1:-1:-1;;5962:38:20;5925:75;;6010:67;;-1:-1:-1;;;6010:67:20;;6051:4;6010:67;;;;;;;;;;;;;;;;;-1:-1:-1;6010:67:20;;;;;;;;;;;;;;;;5962:23;;6010:32;;:67;;;;;5962:23;6010:67;;;;;5962:23;;6010:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6110:5;-1:-1:-1;;;;;6093:32:20;6106:2;6099:5;-1:-1:-1;;;;;6093:32:20;;6117:7;6093:32;;;;-1:-1:-1;;;;;6093:32:20;;;;;;;;;;;;;;;5129:1003;;;;;;;;;;:::o;232:31::-;;;;:::o;6139:1025::-;6300:15;6288:8;:27;;6280:76;;;;-1:-1:-1;;;6280:76:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6366:14;6468:16;;6523:17;;6542:5;6549:2;6553:5;6560:3;6565:8;6512:62;;;;;;;;;;;-1:-1:-1;;;;;6512:62:20;;;;;;;;;;;-1:-1:-1;;;;;6512:62:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6512:62:20;;;-1:-1:-1;;6512:62:20;;;;;;;;;6502:73;;6512:62;6502:73;;;;-1:-1:-1;;;6406:183:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6383:216;;;;;;;;;-1:-1:-1;6618:14:20;;;:6;:14;;;;;;;6383:216;;-1:-1:-1;;;6618:14:20;;;;6617:15;;-1:-1:-1;6609:62:20;;-1:-1:-1;;;;;6609:62:20;;;-1:-1:-1;;;6609:62:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6681:24;6708:26;6718:6;6726:1;6729;6732;6708:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6708:26:20;;-1:-1:-1;;6708:26:20;;;-1:-1:-1;;;;;;;6752:30:20;;;;;;:59;;;6806:5;-1:-1:-1;;;;;6786:25:20;:16;-1:-1:-1;;;;;6786:25:20;;6752:59;6744:109;;;;-1:-1:-1;;;6744:109:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6872:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;:34;;;;;;;;;;6910:1;-1:-1:-1;6872:39:20;6864:74;;;;;-1:-1:-1;;;6864:74:20;;;;;;;;;;;;-1:-1:-1;;;6864:74:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;6985:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;:34;;;;;;;;;;;;;-1:-1:-1;;6985:38:20;6948:75;;7033:70;;-1:-1:-1;;;7033:70:20;;7074:4;7033:70;;;;7081:10;7033:70;;;;;;;;;;-1:-1:-1;7033:70:20;;;;;;;;;;;;;;;;;6985:23;;7033:32;;:70;;;;;6985:23;7033:70;;;;;6985:23;;7033:70;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7119:38:20;;;7146:10;7119:38;;;;-1:-1:-1;;;;;7119:38:20;;;;-1:-1:-1;7135:2:20;;-1:-1:-1;7119:38:20;;;;;;;;;;;;;6139:1025;;;;;;;;;;:::o;386:85::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1876:412::-;-1:-1:-1;;;;;1972:23:20;;;;;;:16;:23;;;;;;;;:27;;;;;;;;2000:10;1972:39;;;;;;;;:48;-1:-1:-1;1972:48:20;1964:86;;;;;-1:-1:-1;;;1964:86:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2102:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;2130:10;2102:39;;;;;;;;;;:47;;;2060:89;;2159:71;;-1:-1:-1;;;2159:71:20;;2200:4;2159:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2102:23;;2159:32;;:71;;;;;2102:23;2159:71;;;;;2102:23;;2159:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2266:7;-1:-1:-1;;;;;2246:35:20;2262:2;2255:5;-1:-1:-1;;;;;2246:35:20;;2275:5;2246:35;;;;;;;;;;;;;;;;;;1876:412;;;;:::o;269:29::-;;;;:::o;1566:303::-;1651:74;;;-1:-1:-1;;;1651:74:20;;1684:10;1651:74;;;;1704:4;1651:74;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1651:74:20;;;;;;;;-1:-1:-1;;;;;1651:32:20;;;;;:74;;;;;;;;;;;-1:-1:-1;1651:32:20;:74;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;1772:23:20;;;;;;;:16;:23;;;;;;;;:27;;;;;;;;:34;;;;;;;;;;;;;;;:42;;1735:79;;1830:32;;;;;;;1772:27;;:23;1830:32;;;;;;;;;1566:303;;;;:::o;342:38::-;;;;;;;;;;;;;;;:::o;4535:587::-;4697:6;;4732:16;;4731:48;;4759:20;4774:4;;4759:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4759:14:20;;-1:-1:-1;;;4759:20:20:i;:::-;4731:48;;;4752:4;4731:48;4715:64;;4794:6;4789:274;4806:14;;;4789:274;;;4841:7;4851:3;;4855:1;4851:6;;;;;;;;;;;;;4841:16;;4871:10;4884:6;;4891:1;4884:9;;;;;;;4966:10;4949:28;;;;:16;4884:9;4949:28;;;;;;;:32;;;;;;;;-1:-1:-1;;;;;4949:39:20;;;;;;;;;;;;;;4884:9;;;;;;;;4949:47;;;4907:89;;;5015:37;;;;;;;4884:9;;-1:-1:-1;4949:39:20;;:32;;-1:-1:-1;4966:10:20;;5015:37;;;;;;;;;;-1:-1:-1;;4822:3:20;;4789:274;;;-1:-1:-1;;;;5079:36:20;4535:587;-1:-1:-1;;;;;;;;;;4535:587:20:o;304:32::-;;;;:::o;3116:430::-;3249:6;;3284:16;;3283:48;;3311:20;3326:4;;3311:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3311:14:20;;-1:-1:-1;;;3311:20:20:i;:::-;3283:48;;;3304:4;3283:48;3400:10;3383:28;;;;:16;:28;;;;;;;;:32;;;;;;;;-1:-1:-1;;;;;3383:39:20;;;;;;;;;;;;;;:47;;3341:89;;3445:37;;;;;;;3383:39;;-1:-1:-1;3383:39:20;;:32;;3400:10;3445:37;;;;;;;;;-1:-1:-1;;;;3508:31:20;3116:430;-1:-1:-1;;;;;;;3116:430:20:o;7175:154::-;7309:2;7301:11;7295:18;;7273:50::o" + }, + "methodIdentifiers": { + "CLAIM_TYPEHASH()": "6b0509b1", + "DOMAIN_SEPARATOR()": "3644e515", + "PASSWORD_TYPEHASH()": "c2d7ccdb", + "claim(address,uint256,address,address,uint256,uint8,bytes32,bytes32)": "1d570d04", + "deposit(address,uint256,address,uint256)": "90d25074", + "nonces(bytes32)": "9e317f12", + "onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": "bc197c81", + "onERC1155Received(address,address,uint256,uint256,bytes)": "f23a6e61", + "password(address,uint256,address,string,uint256,uint8,bytes32,bytes32)": "3a84d051", + "supportsInterface(bytes4)": "01ffc9a7", + "tokenUserBalance(address,uint256,address)": "4aa57216", + "withdraw(address,uint256,address,uint256)": "4b2084e3" + } + } + } + }, + "contracts/Bank20.sol": { + "Bank20": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Password", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "CLAIM_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PASSWORD_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "psw", + "type": "string" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "password", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokenUserBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506040805180820182526006815265042616e6b32360d41b602091820152815180830183526001808252603160f81b9183019190915282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527fc33b8f30d6a402858e57eb4b188ffa157501657e98bce16bd78b9b0a91f4e32a818501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528451808303909101815260c0909101909352825192909101919091206000557fa05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec199490557f3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b600255610d628061013d6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639e317f12116100665780639e317f12146101cc578063c2d7ccdb146101fd578063d9c8a0d314610205578063d9caed1214610233578063fe12e1671461026957610093565b80633644e515146100985780636b0509b1146100b25780638340f549146100ba5780638be27cb6146100f2575b600080fd5b6100a06102c1565b60408051918252519081900360200190f35b6100a06102c7565b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102cd565b005b6100f0600480360361010081101561010957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060ff60408201351690606081013590608001356103b3565b6101e9600480360360208110156101e257600080fd5b50356107ae565b604080519115158252519081900360200190f35b6100a06107c3565b6100a06004803603604081101561021b57600080fd5b506001600160a01b03813581169160200135166107c9565b6100f06004803603606081101561024957600080fd5b506001600160a01b038135811691602081013590911690604001356107e6565b6100f0600480360361010081101561028057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610942565b60005481565b60015481565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b50506001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805486019055815185815291517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629281900390910190a3505050565b428410156103f25760405162461bcd60e51b8152600401808060200182810382526022815260200180610ce86022913960400191505060405180910390fd5b600080546002548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600390925299902054989950505060ff90961615955061055b945050505050576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a70617373776f72643a206578706972656420646967657374604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156105b7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105ed5750886001600160a01b0316816001600160a01b0316145b6106285760405162461bcd60e51b8152600401808060200182810382526023815260200180610d0a6023913960400191505060405180910390fd5b6001600160a01b03808b166000908152600460209081526040808320938d16835292905220548711156106a2576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a70617373776f72643a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038a81166000818152600460208181526040808420958f16845294815284832080548d90039055845163a9059cbb60e01b81523392810192909252602482018c90529351929363a9059cbb9360448084019492939192918390030190829087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5050600082815260036020908152604091829020805460ff191660011790558151898152915133926001600160a01b038d811693908f16927fb6a4de4f10443720d160a890639ebfc73808cda95283421dcc762d9d40d0dacc9281900390910190a450505050505050505050565b60036020526000908152604090205460ff1681565b60025481565b600460209081526000928352604080842090915290825290205481565b6001600160a01b038316600090815260046020908152604080832033845290915290205481111561085e576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a77697468647261773a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038381166000818152600460208181526040808420338552825280842080548890039055805163a9059cbb60e01b815295881692860192909252602485018690529051929363a9059cbb9360448083019491928390030190829087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d60208110156108f857600080fd5b50506040805182815290516001600160a01b0380851692908616917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9181900360200190a3505050565b42841015610997576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b32303a3a636c61696d3a206578706972656420646561646c696e6500604482015290519081900360640190fd5b60008054600154604080516020808201939093526001600160a01b03808e1682840152808d1660608301528b16608082015260a081018a905260c08082018a90528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220808452600390915291205460ff1615610a86576040805162461bcd60e51b815260206004820152601d60248201527f42616e6b32303a3a636c61696d3a206578706972656420646967657374000000604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ae2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610b185750886001600160a01b0316816001600160a01b0316145b610b69576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a636c61696d3a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b6001600160a01b03808b166000908152600460209081526040808320938d1683529290522054871115610bda576040805162461bcd60e51b815260206004820152601460248201527342616e6b32303a3a636c61696d3a206f68206e6f60601b604482015290519081900360640190fd5b6001600160a01b038a811660008181526004602081815260408084208f87168552825280842080548e90039055805163a9059cbb60e01b8152958e1692860192909252602485018c90529051929363a9059cbb9360448083019491928390030190829087803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b505050506040513d6020811015610c7657600080fd5b5050600082815260036020908152604091829020805460ff19166001179055815189815291516001600160a01b03808c16938d821693918f16927fc1405953cccdad6b442e266c84d66ad671e2534c6584f8e6ef92802f7ad294d5929181900390910190a45050505050505050505056fe42616e6b32303a3a70617373776f72643a206578706972656420646561646c696e6542616e6b32303a3a70617373776f72643a20696e76616c6964207369676e6174757265a264697066735822122062be3fabd399c0585a8f63aea8d76c8c2f21b65e26ae43221850c7204d8a353a64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x42616E6B323 PUSH1 0xD4 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP1 DUP3 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP2 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP5 ADD MSTORE PUSH32 0xC33B8F30D6A402858E57EB4B188FFA157501657E98BCE16BD78B9B0A91F4E32A DUP2 DUP6 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP4 MSTORE DUP3 MLOAD SWAP3 SWAP1 SWAP2 ADD SWAP2 SWAP1 SWAP2 KECCAK256 PUSH1 0x0 SSTORE PUSH32 0xA05335BCB0B0413B06AEBF7578CDA47F15E56BDA72A634EE823FC1EF42EC1994 SWAP1 SSTORE PUSH32 0x3DCE4743A9C307489689D5A78849D8466D3D3FA3806E2E97961CEAD248E9A34B PUSH1 0x2 SSTORE PUSH2 0xD62 DUP1 PUSH2 0x13D PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E317F12 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9E317F12 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xC2D7CCDB EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xD9C8A0D3 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xFE12E167 EQ PUSH2 0x269 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x6B0509B1 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0x8BE27CB6 EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x2C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2CD JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x942 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x336 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x2 SLOAD DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x46E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x456 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL DUP3 DUP6 ADD MSTORE PUSH1 0x22 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE PUSH1 0x42 DUP1 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP13 ADD DUP13 MSTORE PUSH1 0x62 SWAP1 SWAP3 ADD DUP2 MSTORE DUP11 MLOAD SWAP11 DUP3 ADD SWAP11 SWAP1 SWAP11 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE SWAP10 SWAP1 KECCAK256 SLOAD SWAP9 SWAP10 POP POP POP PUSH1 0xFF SWAP1 SWAP7 AND ISZERO SWAP6 POP PUSH2 0x55B SWAP5 POP POP POP POP POP JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A70617373776F72643A206578706972656420646967657374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5ED JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD0A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP14 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x6A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A70617373776F72643A206F68206E6F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP16 AND DUP5 MSTORE SWAP5 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP14 SWAP1 SUB SWAP1 SSTORE DUP5 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP13 SWAP1 MSTORE SWAP4 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP5 ADD SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x72A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP4 SWAP1 DUP16 AND SWAP3 PUSH32 0xB6A4DE4F10443720D160A890639EBFC73808CDA95283421DCC762D9D40D0DACC SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x85E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A77697468647261773A206F68206E6F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 DUP9 AND SWAP3 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP4 ADD SWAP5 SWAP2 SWAP3 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x997 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A206578706972656420646561646C696E6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND DUP3 DUP5 ADD MSTORE DUP1 DUP14 AND PUSH1 0x60 DUP4 ADD MSTORE DUP12 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP3 ADD DUP11 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x122 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x142 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A206578706972656420646967657374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB18 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xB69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A20696E76616C6964207369676E6174757265 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP14 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0xBDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x42616E6B32303A3A636C61696D3A206F68206E6F PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP16 DUP8 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP15 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 DUP15 AND SWAP3 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP4 ADD SWAP5 SWAP2 SWAP3 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND SWAP4 DUP14 DUP3 AND SWAP4 SWAP2 DUP16 AND SWAP3 PUSH32 0xC1405953CCCDAD6B442E266C84D66AD671E2534C6584F8E6EF92802F7AD294D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP INVALID TIMESTAMP PUSH2 0x6E6B ORIGIN ADDRESS GASPRICE GASPRICE PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6561646C69 PUSH15 0x6542616E6B32303A3A70617373776F PUSH19 0x643A20696E76616C6964207369676E61747572 PUSH6 0xA26469706673 PC 0x22 SLT KECCAK256 PUSH3 0xBE3FAB 0xD3 SWAP10 0xC0 PC GAS DUP16 PUSH4 0xAEA8D76C DUP13 0x2F 0x21 0xB6 0x5E 0x26 0xAE NUMBER 0x22 XOR POP 0xC7 KECCAK256 0x4D DUP11 CALLDATALOAD GASPRICE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "116:3995:21:-:0;;;714:722;;;;;;;;;-1:-1:-1;1022:15:21;;;;;;;;;;;-1:-1:-1;;;1022:15:21;;;;;1066:10;;;;;;;;;;;-1:-1:-1;;;1066:10:21;;;;;;;871:276;;899:95;871:276;;;;1012:26;871:276;;;;1056:21;871:276;;;;801:9;871:276;;;;1128:4;871:276;;;;;;;;;;;;;;;;;;;;;;;;;848:309;;;;;;;;;;745:12;829:328;1185:108;1168:125;;1323:106;1303:17;:126;116:3995;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100935760003560e01c80639e317f12116100665780639e317f12146101cc578063c2d7ccdb146101fd578063d9c8a0d314610205578063d9caed1214610233578063fe12e1671461026957610093565b80633644e515146100985780636b0509b1146100b25780638340f549146100ba5780638be27cb6146100f2575b600080fd5b6100a06102c1565b60408051918252519081900360200190f35b6100a06102c7565b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102cd565b005b6100f0600480360361010081101561010957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060ff60408201351690606081013590608001356103b3565b6101e9600480360360208110156101e257600080fd5b50356107ae565b604080519115158252519081900360200190f35b6100a06107c3565b6100a06004803603604081101561021b57600080fd5b506001600160a01b03813581169160200135166107c9565b6100f06004803603606081101561024957600080fd5b506001600160a01b038135811691602081013590911690604001356107e6565b6100f0600480360361010081101561028057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610942565b60005481565b60015481565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b50506001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805486019055815185815291517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629281900390910190a3505050565b428410156103f25760405162461bcd60e51b8152600401808060200182810382526022815260200180610ce86022913960400191505060405180910390fd5b600080546002548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600390925299902054989950505060ff90961615955061055b945050505050576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a70617373776f72643a206578706972656420646967657374604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156105b7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105ed5750886001600160a01b0316816001600160a01b0316145b6106285760405162461bcd60e51b8152600401808060200182810382526023815260200180610d0a6023913960400191505060405180910390fd5b6001600160a01b03808b166000908152600460209081526040808320938d16835292905220548711156106a2576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a70617373776f72643a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038a81166000818152600460208181526040808420958f16845294815284832080548d90039055845163a9059cbb60e01b81523392810192909252602482018c90529351929363a9059cbb9360448084019492939192918390030190829087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5050600082815260036020908152604091829020805460ff191660011790558151898152915133926001600160a01b038d811693908f16927fb6a4de4f10443720d160a890639ebfc73808cda95283421dcc762d9d40d0dacc9281900390910190a450505050505050505050565b60036020526000908152604090205460ff1681565b60025481565b600460209081526000928352604080842090915290825290205481565b6001600160a01b038316600090815260046020908152604080832033845290915290205481111561085e576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a77697468647261773a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038381166000818152600460208181526040808420338552825280842080548890039055805163a9059cbb60e01b815295881692860192909252602485018690529051929363a9059cbb9360448083019491928390030190829087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d60208110156108f857600080fd5b50506040805182815290516001600160a01b0380851692908616917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9181900360200190a3505050565b42841015610997576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b32303a3a636c61696d3a206578706972656420646561646c696e6500604482015290519081900360640190fd5b60008054600154604080516020808201939093526001600160a01b03808e1682840152808d1660608301528b16608082015260a081018a905260c08082018a90528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220808452600390915291205460ff1615610a86576040805162461bcd60e51b815260206004820152601d60248201527f42616e6b32303a3a636c61696d3a206578706972656420646967657374000000604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ae2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610b185750886001600160a01b0316816001600160a01b0316145b610b69576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a636c61696d3a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b6001600160a01b03808b166000908152600460209081526040808320938d1683529290522054871115610bda576040805162461bcd60e51b815260206004820152601460248201527342616e6b32303a3a636c61696d3a206f68206e6f60601b604482015290519081900360640190fd5b6001600160a01b038a811660008181526004602081815260408084208f87168552825280842080548e90039055805163a9059cbb60e01b8152958e1692860192909252602485018c90529051929363a9059cbb9360448083019491928390030190829087803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b505050506040513d6020811015610c7657600080fd5b5050600082815260036020908152604091829020805460ff19166001179055815189815291516001600160a01b03808c16938d821693918f16927fc1405953cccdad6b442e266c84d66ad671e2534c6584f8e6ef92802f7ad294d5929181900390910190a45050505050505050505056fe42616e6b32303a3a70617373776f72643a206578706972656420646561646c696e6542616e6b32303a3a70617373776f72643a20696e76616c6964207369676e6174757265a264697066735822122062be3fabd399c0585a8f63aea8d76c8c2f21b65e26ae43221850c7204d8a353a64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x93 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9E317F12 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x9E317F12 EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0xC2D7CCDB EQ PUSH2 0x1FD JUMPI DUP1 PUSH4 0xD9C8A0D3 EQ PUSH2 0x205 JUMPI DUP1 PUSH4 0xD9CAED12 EQ PUSH2 0x233 JUMPI DUP1 PUSH4 0xFE12E167 EQ PUSH2 0x269 JUMPI PUSH2 0x93 JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x98 JUMPI DUP1 PUSH4 0x6B0509B1 EQ PUSH2 0xB2 JUMPI DUP1 PUSH4 0x8340F549 EQ PUSH2 0xBA JUMPI DUP1 PUSH4 0x8BE27CB6 EQ PUSH2 0xF2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xA0 PUSH2 0x2C1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x2C7 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0xD0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x2CD JUMP JUMPDEST STOP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x109 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x13D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x14F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x171 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP POP DUP3 CALLDATALOAD SWAP4 POP POP POP PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x3B3 JUMP JUMPDEST PUSH2 0x1E9 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x7AE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA0 PUSH2 0x7C3 JUMP JUMPDEST PUSH2 0xA0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x21B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x7C9 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x249 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x7E6 JUMP JUMPDEST PUSH2 0xF0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH2 0x100 DUP2 LT ISZERO PUSH2 0x280 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x80 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0xA0 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xC0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xE0 ADD CALLDATALOAD PUSH2 0x942 JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP4 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND SWAP2 PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x336 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x34C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP7 ADD SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x5548C837AB068CF56A2C2479DF0882A4922FD203EDB7517321831D95078C5F62 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x3F2 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xCE8 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x2 SLOAD DUP11 DUP11 DUP11 DUP11 DUP11 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x46E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x456 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x49B JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F NOT DUP2 DUP5 SUB ADD DUP2 MSTORE DUP3 DUP3 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL DUP3 DUP6 ADD MSTORE PUSH1 0x22 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE PUSH1 0x42 DUP1 DUP5 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP2 MLOAD DUP1 DUP5 SUB SWAP1 SWAP13 ADD DUP13 MSTORE PUSH1 0x62 SWAP1 SWAP3 ADD DUP2 MSTORE DUP11 MLOAD SWAP11 DUP3 ADD SWAP11 SWAP1 SWAP11 KECCAK256 PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 SWAP1 SWAP3 MSTORE SWAP10 SWAP1 KECCAK256 SLOAD SWAP9 SWAP10 POP POP POP PUSH1 0xFF SWAP1 SWAP7 AND ISZERO SWAP6 POP PUSH2 0x55B SWAP5 POP POP POP POP POP JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A70617373776F72643A206578706972656420646967657374 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x5B7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x5ED JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x628 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x23 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xD0A PUSH1 0x23 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP14 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0x6A2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A70617373776F72643A206F68206E6F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP6 DUP16 AND DUP5 MSTORE SWAP5 DUP2 MSTORE DUP5 DUP4 KECCAK256 DUP1 SLOAD DUP14 SWAP1 SUB SWAP1 SSTORE DUP5 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE CALLER SWAP3 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP3 ADD DUP13 SWAP1 MSTORE SWAP4 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP5 ADD SWAP5 SWAP3 SWAP4 SWAP2 SWAP3 SWAP2 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x716 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x72A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x740 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD CALLER SWAP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 DUP2 AND SWAP4 SWAP1 DUP16 AND SWAP3 PUSH32 0xB6A4DE4F10443720D160A890639EBFC73808CDA95283421DCC762D9D40D0DACC SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x85E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A77697468647261773A206F68206E6F000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 CALLER DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 DUP9 AND SWAP3 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD DUP7 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP4 ADD SWAP5 SWAP2 SWAP3 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x8CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x8E2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x8F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP3 SWAP1 DUP7 AND SWAP2 PUSH32 0x9B1BFA7FA9EE420A16E124F794C35AC9F90472ACC99140EB2F6447C714CAD8EB SWAP2 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x997 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1F PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A206578706972656420646561646C696E6500 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP15 AND DUP3 DUP5 ADD MSTORE DUP1 DUP14 AND PUSH1 0x60 DUP4 ADD MSTORE DUP12 AND PUSH1 0x80 DUP3 ADD MSTORE PUSH1 0xA0 DUP2 ADD DUP11 SWAP1 MSTORE PUSH1 0xC0 DUP1 DUP3 ADD DUP11 SWAP1 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP3 ADD DUP4 MSTORE DUP1 MLOAD SWAP1 DUP5 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP4 ADD MSTORE PUSH2 0x102 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH2 0x122 DUP1 DUP3 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP2 MLOAD DUP1 DUP3 SUB SWAP1 SWAP5 ADD DUP5 MSTORE PUSH2 0x142 ADD DUP2 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP1 DUP5 MSTORE PUSH1 0x3 SWAP1 SWAP2 MSTORE SWAP2 KECCAK256 SLOAD PUSH1 0xFF AND ISZERO PUSH2 0xA86 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A206578706972656420646967657374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x1 DUP3 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP5 POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 SUB SWAP1 DUP1 DUP5 SUB SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xAE2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0xB18 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0xB69 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x42616E6B32303A3A636C61696D3A20696E76616C6964207369676E6174757265 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 DUP14 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD DUP8 GT ISZERO PUSH2 0xBDA JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH20 0x42616E6B32303A3A636C61696D3A206F68206E6F PUSH1 0x60 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 DUP2 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP16 DUP8 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP15 SWAP1 SUB SWAP1 SSTORE DUP1 MLOAD PUSH4 0xA9059CBB PUSH1 0xE0 SHL DUP2 MSTORE SWAP6 DUP15 AND SWAP3 DUP7 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP6 ADD DUP13 SWAP1 MSTORE SWAP1 MLOAD SWAP3 SWAP4 PUSH4 0xA9059CBB SWAP4 PUSH1 0x44 DUP1 DUP4 ADD SWAP5 SWAP2 SWAP3 DUP4 SWAP1 SUB ADD SWAP1 DUP3 SWAP1 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC4C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC60 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC76 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP2 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP13 AND SWAP4 DUP14 DUP3 AND SWAP4 SWAP2 DUP16 AND SWAP3 PUSH32 0xC1405953CCCDAD6B442E266C84D66AD671E2534C6584F8E6EF92802F7AD294D5 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG4 POP POP POP POP POP POP POP POP POP POP JUMP INVALID TIMESTAMP PUSH2 0x6E6B ORIGIN ADDRESS GASPRICE GASPRICE PUSH17 0x617373776F72643A206578706972656420 PUSH5 0x6561646C69 PUSH15 0x6542616E6B32303A3A70617373776F PUSH19 0x643A20696E76616C6964207369676E61747572 PUSH6 0xA26469706673 PC 0x22 SLT KECCAK256 PUSH3 0xBE3FAB 0xD3 SWAP10 0xC0 PC GAS DUP16 PUSH4 0xAEA8D76C DUP13 0x2F 0x21 0xB6 0x5E 0x26 0xAE NUMBER 0x22 XOR POP 0xC7 KECCAK256 0x4D DUP11 CALLDATALOAD GASPRICE PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "116:3995:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;139:31;;;:::i;:::-;;;;;;;;;;;;;;;;176:29;;;:::i;1442:268::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1442:268:21;;;;;;;;;;;;;;;;;:::i;:::-;;3082:1027;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3082:1027:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3082:1027:21;;-1:-1:-1;;3082:1027:21;;;-1:-1:-1;;;3082:1027:21;;;;;;;;;;;;;;;;;;;;;:::i;249:38::-;;;;;;;;;;;;;;;;-1:-1:-1;249:38:21;;:::i;:::-;;;;;;;;;;;;;;;;;;211:32;;;:::i;293:68::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;293:68:21;;;;;;;;;;:::i;1716:352::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1716:352:21;;;;;;;;;;;;;;;;;:::i;2074:1002::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2074:1002:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;139:31::-;;;;:::o;176:29::-;;;;:::o;1442:268::-;1518:60;;;-1:-1:-1;;;1518:60:21;;1545:10;1518:60;;;;1565:4;1518:60;;;;;;;;;;;;-1:-1:-1;;;;;1518:26:21;;;;;:60;;;;;;;;;;;;;;-1:-1:-1;1518:26:21;:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;1621:23:21;;;;;;;:16;1518:60;1621:23;;;;;;;:30;;;;;;;;;;;;;;;:38;;1588:71;;1675:28;;;;;;;;;;;;;;;;;1442:268;;;:::o;3082:1027::-;3246:15;3234:8;:27;;3226:74;;;;-1:-1:-1;;;3226:74:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3310:14;3412:16;;3467:17;;3486:5;3493;3500:3;3505:5;3512:8;3456:65;;;;;;;;;;;-1:-1:-1;;;;;3456:65:21;;;;;;-1:-1:-1;;;;;3456:65:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3456:65:21;;;-1:-1:-1;;3456:65:21;;;;;;;;;3446:76;;3456:65;3446:76;;;;-1:-1:-1;;;3350:186:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3327:219;;;;;;;;;-1:-1:-1;3565:14:21;;;:6;:14;;;;;;;3327:219;;-1:-1:-1;;;3565:14:21;;;;3564:15;;-1:-1:-1;3556:60:21;;-1:-1:-1;;;;;3556:60:21;;;;-1:-1:-1;;;3556:60:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:24;3653:26;3663:6;3671:1;3674;3677;3653:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3653:26:21;;-1:-1:-1;;3653:26:21;;;-1:-1:-1;;;;;;;3697:30:21;;;;;;:59;;;3751:5;-1:-1:-1;;;;;3731:25:21;:16;-1:-1:-1;;;;;3731:25:21;;3697:59;3689:107;;;;-1:-1:-1;;;3689:107:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3815:23:21;;;;;;;:16;:23;;;;;;;;:30;;;;;;;;;;:39;-1:-1:-1;3815:39:21;3807:75;;;;;-1:-1:-1;;;3807:75:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3925:23:21;;;;;;;:16;:23;;;;;;;;:30;;;;;;;;;;;;;:38;;;3892:71;;3973:41;;-1:-1:-1;;;3973:41:21;;3996:10;3973:41;;;;;;;;;;;;;;;3925:23;;3973:22;;:41;;;;;3925:23;;3973:41;;;;;;;;;;3925:23;3973:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4024:14:21;;;;:6;3973:41;4024:14;;;;;;;;:21;;-1:-1:-1;;4024:21:21;4041:4;4024:21;;;4061:41;;;;;;;4084:10;;-1:-1:-1;;;;;4061:41:21;;;;;;;;;;;;;;;;;;3082:1027;;;;;;;;;;:::o;249:38::-;;;;;;;;;;;;;;;:::o;211:32::-;;;;:::o;293:68::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1716:352::-;-1:-1:-1;;;;;1803:23:21;;;;;;:16;:23;;;;;;;;1827:10;1803:35;;;;;;;;:44;-1:-1:-1;1803:44:21;1795:80;;;;;-1:-1:-1;;;1795:80:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1923:23:21;;;;;;;:16;:23;;;;;;;;1947:10;1923:35;;;;;;;;;:43;;;1885:81;;1976:38;;-1:-1:-1;;;1976:38:21;;;;;;;;;;;;;;;;;;;;1923:23;;1976:22;;:38;;;;;;;;;;;;;;1923:23;1976:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2030:31:21;;;;;;;;-1:-1:-1;;;;;2030:31:21;;;;;;;;;;;;;1976:38;2030:31;;;1716:352;;;:::o;2074:1002::-;2233:15;2221:8;:27;;2213:71;;;;;-1:-1:-1;;;2213:71:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;2294:14;2396:16;;2451:14;;2440:66;;;;;;;;;;;-1:-1:-1;;;;;2440:66:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2430:77;;;;;;-1:-1:-1;;;2334:187:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2311:220;;;;;;;;;2550:14;;;:6;:14;;;;;;;;2549:15;2541:57;;;;;-1:-1:-1;;;2541:57:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;2608:24;2635:26;2645:6;2653:1;2656;2659;2635:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2635:26:21;;-1:-1:-1;;2635:26:21;;;-1:-1:-1;;;;;;;2679:30:21;;;;;;:59;;;2733:5;-1:-1:-1;;;;;2713:25:21;:16;-1:-1:-1;;;;;2713:25:21;;2679:59;2671:104;;;;;-1:-1:-1;;;2671:104:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2794:23:21;;;;;;;:16;:23;;;;;;;;:30;;;;;;;;;;:39;-1:-1:-1;2794:39:21;2786:72;;;;;-1:-1:-1;;;2786:72:21;;;;;;;;;;;;-1:-1:-1;;;2786:72:21;;;;;;;;;;;;;;;-1:-1:-1;;;;;2901:23:21;;;;;;;:16;:23;;;;;;;;:30;;;;;;;;;;;;:38;;;2868:71;;2949:38;;-1:-1:-1;;;2949:38:21;;;;;;;;;;;;;;;;;;;;2901:23;;2949:22;;:38;;;;;;;;;;;;;;2901:23;2949:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2997:14:21;;;;:6;2949:38;2997:14;;;;;;;;:21;;-1:-1:-1;;2997:21:21;3014:4;2997:21;;;3034:35;;;;;;;-1:-1:-1;;;;;3034:35:21;;;;;;;;;;;;;;;;;;;;;;;2074:1002;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "CLAIM_TYPEHASH()": "6b0509b1", + "DOMAIN_SEPARATOR()": "3644e515", + "PASSWORD_TYPEHASH()": "c2d7ccdb", + "claim(address,address,address,uint256,uint256,uint8,bytes32,bytes32)": "fe12e167", + "deposit(address,address,uint256)": "8340f549", + "nonces(bytes32)": "9e317f12", + "password(address,address,string,uint256,uint256,uint8,bytes32,bytes32)": "8be27cb6", + "tokenUserBalance(address,address)": "d9c8a0d3", + "withdraw(address,address,uint256)": "d9caed12" + } + } + } + }, + "contracts/DeDropsERC.sol": { + "DeDropsERC": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "bankAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "Drop", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "bank", + "outputs": [ + { + "internalType": "contract Bank20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "drop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "idToItem", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6080604052600060015534801561001557600080fd5b50604051610b3e380380610b3e8339818101604052602081101561003857600080fd5b505160006100446100b3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b3390565b610a78806100c66000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca578063a36701a9146100d2578063da9dd9c8146101eb578063f2fde38b146102c25761007d565b80631f7b6d3214610082578063715018a61461009c57806376cdb03b146100a6575b600080fd5b61008a6102e8565b60408051918252519081900360200190f35b6100a46102ee565b005b6100ae6103ac565b604080516001600160a01b039092168252519081900360200190f35b6100ae6103bb565b6100ef600480360360208110156100e857600080fd5b50356103ca565b60405180868152602001856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561014b578181015183820152602001610133565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101ab578181015183820152602001610193565b50505050905090810190601f1680156101d85780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6100a46004803603608081101561020157600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184600183028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460018302840111640100000000831117156102b757600080fd5b509092509050610515565b6100a4600480360360208110156102d857600080fd5b50356001600160a01b0316610871565b60015481565b6102f6610985565b6001600160a01b03166103076103bb565b6001600160a01b031614610362576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b6000546001600160a01b031690565b6003602081815260009283526040928390208054600180830154600280850154968501805489516101009582161595909502600019011691909104601f810187900487028401870190985287835292966001600160a01b03909116959491929183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505060048301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905085565b600060016000815460010191905081905590506040518060a00160405280828152602001886001600160a01b0316815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526003602081815260409283902085518155858201516001820180546001600160a01b0319166001600160a01b039092169190911790559285015160028401556060850151805193945061061d9392850192910190610989565b5060808201518051610639916004840191602090910190610989565b5050604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038a1692506323b872dd916064808201926020929091908290030181600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050506040513d60208110156106bc57600080fd5b50506002546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810189905290519189169163095ea7b3916044808201926020929091908290030181600087803b15801561071457600080fd5b505af1158015610728573d6000803e3d6000fd5b505050506040513d602081101561073e57600080fd5b50506002546001600160a01b0316638340f5498861075a6103bb565b896040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050866001600160a01b0316817f44a639b2fe5b0b3012d7c9309bc3e52bfcc797d913ed15979fc01d97f5fa68a988888888886040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a350505050505050565b610879610985565b6001600160a01b031661088a6103bb565b6001600160a01b0316146108e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661092a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a1d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109ca57805160ff19168380011785556109f7565b828001600101855582156109f7579182015b828111156109f75782518255916020019190600101906109dc565b50610a03929150610a07565b5090565b5b80821115610a035760008155600101610a0856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c342e1082bab898c820267d2e94ab779e34a681566009a5e23669ccc3ce5fdbf64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xB3E CODESIZE SUB DUP1 PUSH2 0xB3E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x38 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 PUSH2 0x44 PUSH2 0xB3 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR DUP3 SSTORE PUSH1 0x40 MLOAD SWAP3 SWAP4 POP SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH2 0xB7 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH2 0xA78 DUP1 PUSH2 0xC6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0xA36701A9 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xDA9DD9C8 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2C2 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x1F7B6D32 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x76CDB03B EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH2 0x2EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAE PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x3BB JUMP JUMPDEST PUSH2 0xEF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x178 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1AB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1D8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x515 JUMP JUMPDEST PUSH2 0xA4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x871 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2F6 PUSH2 0x985 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x307 PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x362 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD SLOAD SWAP7 DUP6 ADD DUP1 SLOAD DUP10 MLOAD PUSH2 0x100 SWAP6 DUP3 AND ISZERO SWAP6 SWAP1 SWAP6 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP8 SWAP1 DIV DUP8 MUL DUP5 ADD DUP8 ADD SWAP1 SWAP9 MSTORE DUP8 DUP4 MSTORE SWAP3 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP6 SWAP5 SWAP2 SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x45E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP5 SWAP6 SWAP5 SWAP4 POP SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 ADD SWAP2 SWAP1 POP DUP2 SWAP1 SSTORE SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP8 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP6 DUP2 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP4 SWAP1 SWAP5 MSTORE POP POP DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SSTORE DUP6 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x61D SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 ADD SWAP1 PUSH2 0x989 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x639 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x989 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP3 POP PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD SWAP2 DUP10 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8340F549 DUP9 PUSH2 0x75A PUSH2 0x3BB JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x44A639B2FE5B0B3012D7C9309BC3E52BFCC797D913ED15979FC01D97F5FA68A9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP6 DUP6 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x985 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88A PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA1D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x9CA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x9F7 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x9F7 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x9F7 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9DC JUMP JUMPDEST POP PUSH2 0xA03 SWAP3 SWAP2 POP PUSH2 0xA07 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xA08 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A2646970667358221220C342E1082BAB DUP10 DUP13 DUP3 MUL PUSH8 0xD2E94AB779E34A68 ISZERO PUSH7 0x9A5E23669CCC EXTCODECOPY 0xE5 REVERT 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "233:895:22:-:0;;;295:1;271:25;;614:83;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;614:83:22;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;959:43;;926:6;;959:43;-1:-1:-1;664:4:22;:26;;-1:-1:-1;;;;;;664:26:22;-1:-1:-1;;;;;664:26:22;;;;;;;;;;233:895;;598:104:16;685:10;598:104;:::o;233:895:22:-;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca578063a36701a9146100d2578063da9dd9c8146101eb578063f2fde38b146102c25761007d565b80631f7b6d3214610082578063715018a61461009c57806376cdb03b146100a6575b600080fd5b61008a6102e8565b60408051918252519081900360200190f35b6100a46102ee565b005b6100ae6103ac565b604080516001600160a01b039092168252519081900360200190f35b6100ae6103bb565b6100ef600480360360208110156100e857600080fd5b50356103ca565b60405180868152602001856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561014b578181015183820152602001610133565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101ab578181015183820152602001610193565b50505050905090810190601f1680156101d85780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6100a46004803603608081101561020157600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184600183028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460018302840111640100000000831117156102b757600080fd5b509092509050610515565b6100a4600480360360208110156102d857600080fd5b50356001600160a01b0316610871565b60015481565b6102f6610985565b6001600160a01b03166103076103bb565b6001600160a01b031614610362576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b6000546001600160a01b031690565b6003602081815260009283526040928390208054600180830154600280850154968501805489516101009582161595909502600019011691909104601f810187900487028401870190985287835292966001600160a01b03909116959491929183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505060048301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905085565b600060016000815460010191905081905590506040518060a00160405280828152602001886001600160a01b0316815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526003602081815260409283902085518155858201516001820180546001600160a01b0319166001600160a01b039092169190911790559285015160028401556060850151805193945061061d9392850192910190610989565b5060808201518051610639916004840191602090910190610989565b5050604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038a1692506323b872dd916064808201926020929091908290030181600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050506040513d60208110156106bc57600080fd5b50506002546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810189905290519189169163095ea7b3916044808201926020929091908290030181600087803b15801561071457600080fd5b505af1158015610728573d6000803e3d6000fd5b505050506040513d602081101561073e57600080fd5b50506002546001600160a01b0316638340f5498861075a6103bb565b896040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050866001600160a01b0316817f44a639b2fe5b0b3012d7c9309bc3e52bfcc797d913ed15979fc01d97f5fa68a988888888886040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a350505050505050565b610879610985565b6001600160a01b031661088a6103bb565b6001600160a01b0316146108e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661092a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a1d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109ca57805160ff19168380011785556109f7565b828001600101855582156109f7579182015b828111156109f75782518255916020019190600101906109dc565b50610a03929150610a07565b5090565b5b80821115610a035760008155600101610a0856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c342e1082bab898c820267d2e94ab779e34a681566009a5e23669ccc3ce5fdbf64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x7D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x8DA5CB5B GT PUSH2 0x5B JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0xCA JUMPI DUP1 PUSH4 0xA36701A9 EQ PUSH2 0xD2 JUMPI DUP1 PUSH4 0xDA9DD9C8 EQ PUSH2 0x1EB JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x2C2 JUMPI PUSH2 0x7D JUMP JUMPDEST DUP1 PUSH4 0x1F7B6D32 EQ PUSH2 0x82 JUMPI DUP1 PUSH4 0x715018A6 EQ PUSH2 0x9C JUMPI DUP1 PUSH4 0x76CDB03B EQ PUSH2 0xA6 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x8A PUSH2 0x2E8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH2 0x2EE JUMP JUMPDEST STOP JUMPDEST PUSH2 0xAE PUSH2 0x3AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0xAE PUSH2 0x3BB JUMP JUMPDEST PUSH2 0xEF PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x3CA JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x133 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x178 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1AB JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x193 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1D8 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0xA4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x201 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x231 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x265 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x283 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2B7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x515 JUMP JUMPDEST PUSH2 0xA4 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x871 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH2 0x2F6 PUSH2 0x985 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x307 PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x362 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD SLOAD SWAP7 DUP6 ADD DUP1 SLOAD DUP10 MLOAD PUSH2 0x100 SWAP6 DUP3 AND ISZERO SWAP6 SWAP1 SWAP6 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP8 SWAP1 DIV DUP8 MUL DUP5 ADD DUP8 ADD SWAP1 SWAP9 MSTORE DUP8 DUP4 MSTORE SWAP3 SWAP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP2 AND SWAP6 SWAP5 SWAP2 SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x47B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x450 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x47B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x45E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x4 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP5 SWAP6 SWAP5 SWAP4 POP SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x50B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x4E0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x50B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4EE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x0 DUP2 SLOAD PUSH1 0x1 ADD SWAP2 SWAP1 POP DUP2 SWAP1 SSTORE SWAP1 POP PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP7 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP8 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP6 DUP2 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP4 SWAP1 SWAP5 MSTORE POP POP DUP4 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 SWAP3 DUP4 SWAP1 KECCAK256 DUP6 MLOAD DUP2 SSTORE DUP6 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE SWAP3 DUP6 ADD MLOAD PUSH1 0x2 DUP5 ADD SSTORE PUSH1 0x60 DUP6 ADD MLOAD DUP1 MLOAD SWAP4 SWAP5 POP PUSH2 0x61D SWAP4 SWAP3 DUP6 ADD SWAP3 SWAP2 ADD SWAP1 PUSH2 0x989 JUMP JUMPDEST POP PUSH1 0x80 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0x639 SWAP2 PUSH1 0x4 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x989 JUMP JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH4 0x23B872DD PUSH1 0xE0 SHL DUP2 MSTORE CALLER PUSH1 0x4 DUP3 ADD MSTORE ADDRESS PUSH1 0x24 DUP3 ADD MSTORE PUSH1 0x44 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP11 AND SWAP3 POP PUSH4 0x23B872DD SWAP2 PUSH1 0x64 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x692 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x6A6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6BC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH4 0x95EA7B3 PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 DUP4 AND PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x24 DUP2 ADD DUP10 SWAP1 MSTORE SWAP1 MLOAD SWAP2 DUP10 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x714 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x728 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x73E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x2 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0x8340F549 DUP9 PUSH2 0x75A PUSH2 0x3BB JUMP JUMPDEST DUP10 PUSH1 0x40 MLOAD DUP5 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7C5 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH32 0x44A639B2FE5B0B3012D7C9309BC3E52BFCC797D913ED15979FC01D97F5FA68A9 DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP6 DUP6 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP LOG3 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH2 0x879 PUSH2 0x985 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x88A PUSH2 0x3BB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x8E5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x92A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0xA1D PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND SWAP4 SWAP3 AND SWAP2 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP2 LOG3 PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x9CA JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x9F7 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x9F7 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x9F7 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x9DC JUMP JUMPDEST POP PUSH2 0xA03 SWAP3 SWAP2 POP PUSH2 0xA07 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xA03 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xA08 JUMP INVALID 0x4F PUSH24 0x6E61626C653A206E6577206F776E65722069732074686520 PUSH27 0x65726F2061646472657373A2646970667358221220C342E1082BAB DUP10 DUP13 DUP3 MUL PUSH8 0xD2E94AB779E34A68 ISZERO PUSH7 0x9A5E23669CCC EXTCODECOPY 0xE5 REVERT 0xBF PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "233:895:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;271:25;;;:::i;:::-;;;;;;;;;;;;;;;;1717:145:0;;;:::i;:::-;;302:18:22;;;:::i;:::-;;;;-1:-1:-1;;;;;302:18:22;;;;;;;;;;;;;;1085:85:0;;;:::i;565:41:22:-;;;;;;;;;;;;;;;;-1:-1:-1;565:41:22;;:::i;:::-;;;;;;;;;;-1:-1:-1;;;;;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:422;;;;;;;;;;;;;;;;-1:-1:-1;;;;;704:422:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;704:422:22;;-1:-1:-1;704:422:22;-1:-1:-1;704:422:22;:::i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;-1:-1:-1;;;;;2011:240:0;;:::i;271:25:22:-;;;;:::o;1717:145:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1823:1:::1;1807:6:::0;;1786:40:::1;::::0;-1:-1:-1;;;;;1807:6:0;;::::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1853:1;1836:19:::0;;-1:-1:-1;;;;;;1836:19:0::1;::::0;;1717:145::o;302:18:22:-;;;-1:-1:-1;;;;;302:18:22;;:::o;1085:85:0:-;1131:7;1157:6;-1:-1:-1;;;;;1157:6:0;1085:85;:::o;565:41:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;565:41:22;;;;;;;;;;;;;;;;-1:-1:-1;;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;565:41:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;704:422::-;813:10;828:6;;826:8;;;;;;;;;;813:21;;859:36;;;;;;;;864:2;859:36;;;;868:5;-1:-1:-1;;;;;859:36:22;;;;;875:6;859:36;;;;883:4;;859:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;859:36:22;;;-1:-1:-1;859:36:22;;;;;;;;;;;;;;;;;;;;;;;;;;;889:5;;;;;;859:36;;889:5;;;;859:36;;;;;;;;-1:-1:-1;859:36:22;;;;-1:-1:-1;;844:12:22;;;:8;:12;;;;;;;;;:51;;;;;;;;;;;;;-1:-1:-1;;;;;;844:51:22;-1:-1:-1;;;;;844:51:22;;;;;;;;;;;;;;;;;;;;;;;:12;;-1:-1:-1;844:51:22;;;;;;;;;;:::i;:::-;-1:-1:-1;844:51:22;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;906:61:22;;;-1:-1:-1;;;906:61:22;;933:10;906:61;;;;953:4;906:61;;;;;;;;;;;;-1:-1:-1;;;;;906:26:22;;;-1:-1:-1;906:26:22;;:61;;;;;;;;;;;;;;;-1:-1:-1;906:26:22;:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1007:4:22;;977:44;;;-1:-1:-1;;;977:44:22;;-1:-1:-1;;;;;1007:4:22;;;977:44;;;;;;;;;;;;:21;;;;;;:44;;;;;906:61;;977:44;;;;;;;;1007:4;977:21;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1031:4:22;;-1:-1:-1;;;;;1031:4:22;:12;1044:5;1051:7;:5;:7::i;:::-;1060:6;1031:36;;;;;;;;;;;;;-1:-1:-1;;;;;1031:36:22;;;;;;-1:-1:-1;;;;;1031:36:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1092:5;-1:-1:-1;;;;;1083:36:22;1088:2;1083:36;1099:6;1107:4;;1113:5;;1083:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1083:36:22;;;;;;;;;;;;;;;-1:-1:-1;1083:36:22;;;;;;;;;;;;;;;;;-1:-1:-1;;1083:36:22;;;;;;;;-1:-1:-1;1083:36:22;;-1:-1:-1;;;;;;;;1083:36:22;704:422;;;;;;;:::o;2011:240:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2099:22:0;::::1;2091:73;;;;-1:-1:-1::0;;;2091:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;;2179:38:::1;::::0;-1:-1:-1;;;;;2179:38:0;;::::1;::::0;2200:6;::::1;::::0;2179:38:::1;::::0;::::1;2227:6;:17:::0;;-1:-1:-1;;;;;;2227:17:0::1;-1:-1:-1::0;;;;;2227:17:0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;598:104:16:-;685:10;598:104;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;" + }, + "methodIdentifiers": { + "bank()": "76cdb03b", + "drop(address,uint256,string,string)": "da9dd9c8", + "idToItem(uint256)": "a36701a9", + "length()": "1f7b6d32", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "transferOwnership(address)": "f2fde38b" + } + } + } + }, + "contracts/DeDropsNFT.sol": { + "DeDropsNFT": { + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "bankAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "Drop", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bank", + "outputs": [ + { + "internalType": "contract Bank1155", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "idToItem", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405260006005553480156200001657600080fd5b506040516200220e3803806200220e833981810160405260208110156200003c57600080fd5b505160408051808201909152600b81526a3232b23937b839973c3cbd60a91b6020820152620000726301ffc9a760e01b62000122565b6200007d81620001a7565b6200008f636cdb3d1360e11b62000122565b620000a16303a24d0760e21b62000122565b506000620000ae620001c0565b600480546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b039290921691909117905562000260565b6001600160e01b0319808216141562000182576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001bc906003906020840190620001c4565b5050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020757805160ff191683800117855562000237565b8280016001018555821562000237579182015b82811115620002375782518255916020019190600101906200021a565b506200024592915062000249565b5090565b5b808211156200024557600081556001016200024a565b611f9e80620002706000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c8063715018a611610097578063a36701a911610066578063a36701a914610669578063e985e9c514610772578063f242432a146107a0578063f2fde38b14610869576100f4565b8063715018a61461060757806376cdb03b1461060f5780638da5cb5b14610633578063a22cb4651461063b576100f4565b80631f7b6d32116100d35780631f7b6d32146102045780632825df7b1461020c5780632eb2c2d6146102d35780634e1273f414610494576100f4565b8062fdd58e146100f957806301ffc9a7146101375780630e89341c14610172575b600080fd5b6101256004803603604081101561010f57600080fd5b506001600160a01b03813516906020013561088f565b60408051918252519081900360200190f35b61015e6004803603602081101561014d57600080fd5b50356001600160e01b0319166108fe565b604080519115158252519081900360200190f35b61018f6004803603602081101561018857600080fd5b503561091d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101256109b5565b6102d16004803603606081101561022257600080fd5b81359190810190604081016020820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b919390929091602081019035600160201b81111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111600160201b831117156102c657600080fd5b5090925090506109bb565b005b6102d1600480360360a08110156102e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561031c57600080fd5b82018360208201111561032e57600080fd5b803590602001918460208302840111600160201b8311171561034f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561039e57600080fd5b8201836020820111156103b057600080fd5b803590602001918460208302840111600160201b831117156103d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b86945050505050565b6105b7600480360360408110156104aa57600080fd5b810190602081018135600160201b8111156104c457600080fd5b8201836020820111156104d657600080fd5b803590602001918460208302840111600160201b831117156104f757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561054657600080fd5b82018360208201111561055857600080fd5b803590602001918460208302840111600160201b8311171561057957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e84945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105f35781810151838201526020016105db565b505050509050019250505060405180910390f35b6102d1610f70565b61061761102e565b604080516001600160a01b039092168252519081900360200190f35b61061761103d565b6102d16004803603604081101561065157600080fd5b506001600160a01b038135169060200135151561104d565b6106866004803603602081101561067f57600080fd5b503561113c565b604051808581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156106d35781810151838201526020016106bb565b50505050905090810190601f1680156107005780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561073357818101518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61015e6004803603604081101561078857600080fd5b506001600160a01b0381358116916020013516611275565b6102d1600480360360a08110156107b657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156107f557600080fd5b82018360208201111561080757600080fd5b803590602001918460018302840111600160201b8311171561082857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112a3945050505050565b6102d16004803603602081101561087f57600080fd5b50356001600160a01b031661146e565b60006001600160a01b0383166108d65760405162461bcd60e51b815260040180806020018281038252602b815260200180611dd3602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b50505050509050919050565b60055481565b60058054600101908190556040805160808101825282815260208082018990528251601f880182900482028101820184528781529192830191908890889081908401838280828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526007602090815260409182902084518155848201516001820155918401518051929350610a859260028501929190910190611c38565b5060608201518051610aa1916003840191602090910190611c38565b50905050610ac033828860405180602001604052806000815250611583565b600654610ae99033906001600160a01b03168389610ae4610adf61103d565b61168b565b6112a3565b807fd98d7d262ee69a0e7f1e002c08e8f5432b5b407f3fbc7dacf22c4901c3b9ffb887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a2505050505050565b8151835114610bc65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f206028913960400191505060405180910390fd5b6001600160a01b038416610c0b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b610c13611702565b6001600160a01b0316856001600160a01b03161480610c3e5750610c3e85610c39611702565b611275565b610c795760405162461bcd60e51b8152600401808060200182810382526032815260200180611e726032913960400191505060405180910390fd5b6000610c83611702565b9050610c93818787878787610e7c565b60005b8451811015610d94576000858281518110610cad57fe5b602002602001015190506000858381518110610cc557fe5b60200260200101519050610d32816040518060600160405280602a8152602001611ea4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546117069092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610d69908261179d565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610c96565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e1a578181015183820152602001610e02565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e59578181015183820152602001610e41565b5050505090500194505050505060405180910390a4610e7c8187878787876117fe565b505050505050565b60608151835114610ec65760405162461bcd60e51b8152600401808060200182810382526029815260200180611ef76029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610ee057600080fd5b50604051908082528060200260200182016040528015610f0a578160200160208202803683370190505b50905060005b8451811015610f6857610f49858281518110610f2857fe5b6020026020010151858381518110610f3c57fe5b602002602001015161088f565b828281518110610f5557fe5b6020908102919091010152600101610f10565b509392505050565b610f78611702565b6001600160a01b0316610f8961103d565b6001600160a01b031614610fe4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6006546001600160a01b031681565b6004546001600160a01b03165b90565b816001600160a01b031661105f611702565b6001600160a01b031614156110a55760405162461bcd60e51b8152600401808060200182810382526029815260200180611ece6029913960400191505060405180910390fd5b80600260006110b2611702565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110f6611702565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60076020908152600091825260409182902080546001808301546002808501805488519481161561010002600019011691909104601f8101879004870284018701909752868352929590949192918301828280156111db5780601f106111b0576101008083540402835291602001916111db565b820191906000526020600020905b8154815290600101906020018083116111be57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b5050505050905084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166112e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b6112f0611702565b6001600160a01b0316856001600160a01b03161480611316575061131685610c39611702565b6113515760405162461bcd60e51b8152600401808060200182810382526029815260200180611e246029913960400191505060405180910390fd5b600061135b611702565b905061137b81878761136c88611a7d565b61137588611a7d565b87610e7c565b6113c2836040518060600160405280602a8152602001611ea4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190611706565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546113f9908461179d565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610e7c818787878787611ac1565b611476611702565b6001600160a01b031661148761103d565b6001600160a01b0316146114e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166115275760405162461bcd60e51b8152600401808060200182810382526026815260200180611dfe6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0384166115c85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f486021913960400191505060405180910390fd5b60006115d2611702565b90506115e48160008761136c88611a7d565b60008481526001602090815260408083206001600160a01b0389168452909152902054611611908461179d565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a461168481600087878787611ac1565b5050505050565b60408051601480825281830190925260609183831b91839160208201818036833701905050905060005b60148160ff161015610f6857828160ff16601481106116d057fe5b1a60f81b828260ff16815181106116e357fe5b60200101906001600160f81b031916908160001a9053506001016116b5565b3390565b600081848411156117955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a578181015183820152602001611742565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611810846001600160a01b0316611c32565b15610e7c57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561189e578181015183820152602001611886565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611919578181015183820152602001611901565b50505050905090810190601f1680156119465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561196b57600080fd5b505af192505050801561199057506040513d602081101561198b57600080fd5b505160015b611a255761199c611cd1565b806119a757506119ee565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561175a578181015183820152602001611742565b60405162461bcd60e51b8152600401808060200182810382526034815260200180611d776034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b50505050505050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110611ab057fe5b602090810291909101015292915050565b611ad3846001600160a01b0316611c32565b15610e7c57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611bb257600080fd5b505af1925050508015611bd757506040513d6020811015611bd257600080fd5b505160015b611be35761199c611cd1565b6001600160e01b0319811663f23a6e6160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca6565b82800160010185558215611ca6579182015b82811115611ca6578251825591602001919060010190611c8b565b50611cb2929150611cb6565b5090565b5b80821115611cb25760008155600101611cb7565b60e01c90565b600060443d1015611ce15761104a565b600481823e6308c379a0611cf58251611ccb565b14611cff5761104a565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715611d2f575050505061104a565b82840192508251915080821115611d49575050505061104a565b503d83016020828401011115611d615750505061104a565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212209702282f04d6f2e9a04143d3f725d5c892fc23a203ac3b39d6f699a36dec15a764736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 PUSH1 0x5 SSTORE CALLVALUE DUP1 ISZERO PUSH3 0x16 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x220E CODESIZE SUB DUP1 PUSH3 0x220E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x3C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xB DUP2 MSTORE PUSH11 0x3232B23937B839973C3CBD PUSH1 0xA9 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x72 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x122 JUMP JUMPDEST PUSH3 0x7D DUP2 PUSH3 0x1A7 JUMP JUMPDEST PUSH3 0x8F PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL PUSH3 0x122 JUMP JUMPDEST PUSH3 0xA1 PUSH4 0x3A24D07 PUSH1 0xE2 SHL PUSH3 0x122 JUMP JUMPDEST POP PUSH1 0x0 PUSH3 0xAE PUSH3 0x1C0 JUMP JUMPDEST PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE PUSH1 0x40 MLOAD SWAP2 SWAP3 POP SWAP1 PUSH1 0x0 SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP3 SWAP1 LOG3 POP PUSH1 0x6 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE PUSH3 0x260 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x182 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH3 0x1BC SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x1C4 JUMP JUMPDEST POP POP JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x207 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x237 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x237 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x237 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x21A JUMP JUMPDEST POP PUSH3 0x245 SWAP3 SWAP2 POP PUSH3 0x249 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x245 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x24A JUMP JUMPDEST PUSH2 0x1F9E DUP1 PUSH3 0x270 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA36701A9 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA36701A9 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x772 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x869 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x76CDB03B EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x63B JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x1F7B6D32 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x1F7B6D32 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x2825DF7B EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x494 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x91D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x125 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x9BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB86 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xE84 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D1 PUSH2 0xF70 JUMP JUMPDEST PUSH2 0x617 PUSH2 0x102E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x617 PUSH2 0x103D JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x104D JUMP JUMPDEST PUSH2 0x686 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x113C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6BB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x700 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x733 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x760 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1275 JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x12A3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x146E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DD3 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x9A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x97E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9A9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x98C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x1F DUP9 ADD DUP3 SWAP1 DIV DUP3 MUL DUP2 ADD DUP3 ADD DUP5 MSTORE DUP8 DUP2 MSTORE SWAP2 SWAP3 DUP4 ADD SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP8 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP6 DUP2 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP4 SWAP1 SWAP5 MSTORE POP POP DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE DUP5 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 DUP5 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH2 0xA85 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0xAA1 SWAP2 PUSH1 0x3 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST POP SWAP1 POP POP PUSH2 0xAC0 CALLER DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1583 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xAE9 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP10 PUSH2 0xAE4 PUSH2 0xADF PUSH2 0x103D JUMP JUMPDEST PUSH2 0x168B JUMP JUMPDEST PUSH2 0x12A3 JUMP JUMPDEST DUP1 PUSH32 0xD98D7D262EE69A0E7F1E002C08E8F5432B5B407F3FBC7DACF22C4901C3B9FFB8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP6 DUP6 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xBC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F20 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC13 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC3E JUMPI POP PUSH2 0xC3E DUP6 PUSH2 0xC39 PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x1275 JUMP JUMPDEST PUSH2 0xC79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E72 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC83 PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0xC93 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCAD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xCC5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xD32 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EA4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1706 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD69 SWAP1 DUP3 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0xC96 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE02 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE59 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE41 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xE7C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17FE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EF7 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF0A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH2 0xF49 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x88F JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF55 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF10 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF78 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF89 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFE4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x105F PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ECE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x10B2 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x10F6 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP9 MLOAD SWAP5 DUP2 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP8 SWAP1 DIV DUP8 MUL DUP5 ADD DUP8 ADD SWAP1 SWAP8 MSTORE DUP7 DUP4 MSTORE SWAP3 SWAP6 SWAP1 SWAP5 SWAP2 SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x11DB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11DB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x11BE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP5 SWAP6 SWAP5 SWAP4 POP SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x126B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1240 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x126B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x124E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH2 0x1316 DUP6 PUSH2 0xC39 PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x1351 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E24 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135B PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0x137B DUP2 DUP8 DUP8 PUSH2 0x136C DUP9 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x1375 DUP9 PUSH2 0x1A7D JUMP JUMPDEST DUP8 PUSH2 0xE7C JUMP JUMPDEST PUSH2 0x13C2 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EA4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x13F9 SWAP1 DUP5 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xE7C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1AC1 JUMP JUMPDEST PUSH2 0x1476 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1487 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1527 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFE PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F48 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15D2 PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0x15E4 DUP2 PUSH1 0x0 DUP8 PUSH2 0x136C DUP9 PUSH2 0x1A7D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1611 SWAP1 DUP5 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP3 DUP4 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD SWAP1 SWAP5 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x1684 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1AC1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP4 DUP4 SHL SWAP2 DUP4 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0xF68 JUMPI DUP3 DUP2 PUSH1 0xFF AND PUSH1 0x14 DUP2 LT PUSH2 0x16D0 JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x16E3 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x16B5 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x175A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1742 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1787 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1810 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C32 JUMP JUMPDEST ISZERO PUSH2 0xE7C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x189E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1886 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1919 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1901 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1946 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x198B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x1A25 JUMPI PUSH2 0x199C PUSH2 0x1CD1 JUMP JUMPDEST DUP1 PUSH2 0x19A7 JUMPI POP PUSH2 0x19EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x175A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1742 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1D77 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DAB PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1AB0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AD3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C32 JUMP JUMPDEST ISZERO PUSH2 0xE7C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B62 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B4A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1BD7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x1BE3 JUMPI PUSH2 0x199C PUSH2 0x1CD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DAB PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C79 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1CA6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1CA6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CA6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST POP PUSH2 0x1CB2 SWAP3 SWAP2 POP PUSH2 0x1CB6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CB2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1CE1 JUMPI PUSH2 0x104A JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x1CF5 DUP3 MLOAD PUSH2 0x1CCB JUMP JUMPDEST EQ PUSH2 0x1CFF JUMPI PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1D2F JUMPI POP POP POP POP PUSH2 0x104A JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D49 JUMPI POP POP POP POP PUSH2 0x104A JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x1D61 JUMPI POP POP POP PUSH2 0x104A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734F776E61626C653A206E6577206F776E PUSH6 0x722069732074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH4 0x616C6C65 PUSH19 0x206973206E6F74206F776E6572206E6F722061 PUSH17 0x70726F766564455243313135353A207472 PUSH2 0x6E73 PUSH7 0x657220746F2074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0x455243313135353A20 PUSH14 0x696E7420746F20746865207A6572 PUSH16 0x2061646472657373A264697066735822 SLT KECCAK256 SWAP8 MUL 0x28 0x2F DIV 0xD6 CALLCODE 0xE9 LOG0 COINBASE NUMBER 0xD3 0xF7 0x25 0xD5 0xC8 SWAP3 0xFC 0x23 LOG2 SUB 0xAC EXTCODESIZE CODECOPY 0xD6 0xF6 SWAP10 LOG3 PUSH14 0xEC15A764736F6C634300060C0033 ", + "sourceMap": "306:1099:23:-:0;;;392:1;368:25;;667:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;667:85:23;1976:354:4;;;;;;;;;;;;-1:-1:-1;;;667:85:23;1976:354:4;;;768:40:1;-1:-1:-1;;;768:18:1;:40::i;:::-;2026:13:4;2034:4;2026:7;:13::i;:::-;2128:41;-1:-1:-1;;;2128:18:4;:41::i;:::-;2269:54;-1:-1:-1;;;2269:18:4;:54::i;:::-;-1:-1:-1;884:17:0;904:12;:10;:12::i;:::-;926:6;:18;;-1:-1:-1;;;;;;926:18:0;-1:-1:-1;;;;;926:18:0;;;;;;;;959:43;;926:18;;-1:-1:-1;926:18:0;-1:-1:-1;;959:43:0;;-1:-1:-1;;959:43:0;-1:-1:-1;717:4:23;:28;;-1:-1:-1;;;;;;717:28:23;-1:-1:-1;;;;;717:28:23;;;;;;;;;;306:1099;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;7541:86:4:-;7607:13;;;;:4;;:13;;;;;:::i;:::-;;7541:86;:::o;598:104:16:-;685:10;598:104;:::o;306:1099:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;306:1099:23;;;-1:-1:-1;306:1099:23;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100f45760003560e01c8063715018a611610097578063a36701a911610066578063a36701a914610669578063e985e9c514610772578063f242432a146107a0578063f2fde38b14610869576100f4565b8063715018a61461060757806376cdb03b1461060f5780638da5cb5b14610633578063a22cb4651461063b576100f4565b80631f7b6d32116100d35780631f7b6d32146102045780632825df7b1461020c5780632eb2c2d6146102d35780634e1273f414610494576100f4565b8062fdd58e146100f957806301ffc9a7146101375780630e89341c14610172575b600080fd5b6101256004803603604081101561010f57600080fd5b506001600160a01b03813516906020013561088f565b60408051918252519081900360200190f35b61015e6004803603602081101561014d57600080fd5b50356001600160e01b0319166108fe565b604080519115158252519081900360200190f35b61018f6004803603602081101561018857600080fd5b503561091d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101256109b5565b6102d16004803603606081101561022257600080fd5b81359190810190604081016020820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b919390929091602081019035600160201b81111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111600160201b831117156102c657600080fd5b5090925090506109bb565b005b6102d1600480360360a08110156102e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561031c57600080fd5b82018360208201111561032e57600080fd5b803590602001918460208302840111600160201b8311171561034f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561039e57600080fd5b8201836020820111156103b057600080fd5b803590602001918460208302840111600160201b831117156103d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b86945050505050565b6105b7600480360360408110156104aa57600080fd5b810190602081018135600160201b8111156104c457600080fd5b8201836020820111156104d657600080fd5b803590602001918460208302840111600160201b831117156104f757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561054657600080fd5b82018360208201111561055857600080fd5b803590602001918460208302840111600160201b8311171561057957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e84945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105f35781810151838201526020016105db565b505050509050019250505060405180910390f35b6102d1610f70565b61061761102e565b604080516001600160a01b039092168252519081900360200190f35b61061761103d565b6102d16004803603604081101561065157600080fd5b506001600160a01b038135169060200135151561104d565b6106866004803603602081101561067f57600080fd5b503561113c565b604051808581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156106d35781810151838201526020016106bb565b50505050905090810190601f1680156107005780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561073357818101518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61015e6004803603604081101561078857600080fd5b506001600160a01b0381358116916020013516611275565b6102d1600480360360a08110156107b657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156107f557600080fd5b82018360208201111561080757600080fd5b803590602001918460018302840111600160201b8311171561082857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112a3945050505050565b6102d16004803603602081101561087f57600080fd5b50356001600160a01b031661146e565b60006001600160a01b0383166108d65760405162461bcd60e51b815260040180806020018281038252602b815260200180611dd3602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b50505050509050919050565b60055481565b60058054600101908190556040805160808101825282815260208082018990528251601f880182900482028101820184528781529192830191908890889081908401838280828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526007602090815260409182902084518155848201516001820155918401518051929350610a859260028501929190910190611c38565b5060608201518051610aa1916003840191602090910190611c38565b50905050610ac033828860405180602001604052806000815250611583565b600654610ae99033906001600160a01b03168389610ae4610adf61103d565b61168b565b6112a3565b807fd98d7d262ee69a0e7f1e002c08e8f5432b5b407f3fbc7dacf22c4901c3b9ffb887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a2505050505050565b8151835114610bc65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f206028913960400191505060405180910390fd5b6001600160a01b038416610c0b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b610c13611702565b6001600160a01b0316856001600160a01b03161480610c3e5750610c3e85610c39611702565b611275565b610c795760405162461bcd60e51b8152600401808060200182810382526032815260200180611e726032913960400191505060405180910390fd5b6000610c83611702565b9050610c93818787878787610e7c565b60005b8451811015610d94576000858281518110610cad57fe5b602002602001015190506000858381518110610cc557fe5b60200260200101519050610d32816040518060600160405280602a8152602001611ea4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546117069092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610d69908261179d565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610c96565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e1a578181015183820152602001610e02565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e59578181015183820152602001610e41565b5050505090500194505050505060405180910390a4610e7c8187878787876117fe565b505050505050565b60608151835114610ec65760405162461bcd60e51b8152600401808060200182810382526029815260200180611ef76029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610ee057600080fd5b50604051908082528060200260200182016040528015610f0a578160200160208202803683370190505b50905060005b8451811015610f6857610f49858281518110610f2857fe5b6020026020010151858381518110610f3c57fe5b602002602001015161088f565b828281518110610f5557fe5b6020908102919091010152600101610f10565b509392505050565b610f78611702565b6001600160a01b0316610f8961103d565b6001600160a01b031614610fe4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6006546001600160a01b031681565b6004546001600160a01b03165b90565b816001600160a01b031661105f611702565b6001600160a01b031614156110a55760405162461bcd60e51b8152600401808060200182810382526029815260200180611ece6029913960400191505060405180910390fd5b80600260006110b2611702565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110f6611702565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60076020908152600091825260409182902080546001808301546002808501805488519481161561010002600019011691909104601f8101879004870284018701909752868352929590949192918301828280156111db5780601f106111b0576101008083540402835291602001916111db565b820191906000526020600020905b8154815290600101906020018083116111be57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b5050505050905084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166112e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b6112f0611702565b6001600160a01b0316856001600160a01b03161480611316575061131685610c39611702565b6113515760405162461bcd60e51b8152600401808060200182810382526029815260200180611e246029913960400191505060405180910390fd5b600061135b611702565b905061137b81878761136c88611a7d565b61137588611a7d565b87610e7c565b6113c2836040518060600160405280602a8152602001611ea4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190611706565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546113f9908461179d565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610e7c818787878787611ac1565b611476611702565b6001600160a01b031661148761103d565b6001600160a01b0316146114e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166115275760405162461bcd60e51b8152600401808060200182810382526026815260200180611dfe6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0384166115c85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f486021913960400191505060405180910390fd5b60006115d2611702565b90506115e48160008761136c88611a7d565b60008481526001602090815260408083206001600160a01b0389168452909152902054611611908461179d565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a461168481600087878787611ac1565b5050505050565b60408051601480825281830190925260609183831b91839160208201818036833701905050905060005b60148160ff161015610f6857828160ff16601481106116d057fe5b1a60f81b828260ff16815181106116e357fe5b60200101906001600160f81b031916908160001a9053506001016116b5565b3390565b600081848411156117955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a578181015183820152602001611742565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611810846001600160a01b0316611c32565b15610e7c57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561189e578181015183820152602001611886565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611919578181015183820152602001611901565b50505050905090810190601f1680156119465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561196b57600080fd5b505af192505050801561199057506040513d602081101561198b57600080fd5b505160015b611a255761199c611cd1565b806119a757506119ee565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561175a578181015183820152602001611742565b60405162461bcd60e51b8152600401808060200182810382526034815260200180611d776034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b50505050505050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110611ab057fe5b602090810291909101015292915050565b611ad3846001600160a01b0316611c32565b15610e7c57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611bb257600080fd5b505af1925050508015611bd757506040513d6020811015611bd257600080fd5b505160015b611be35761199c611cd1565b6001600160e01b0319811663f23a6e6160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca6565b82800160010185558215611ca6579182015b82811115611ca6578251825591602001919060010190611c8b565b50611cb2929150611cb6565b5090565b5b80821115611cb25760008155600101611cb7565b60e01c90565b600060443d1015611ce15761104a565b600481823e6308c379a0611cf58251611ccb565b14611cff5761104a565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715611d2f575050505061104a565b82840192508251915080821115611d49575050505061104a565b503d83016020828401011115611d615750505061104a565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212209702282f04d6f2e9a04143d3f725d5c892fc23a203ac3b39d6f699a36dec15a764736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xF4 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x715018A6 GT PUSH2 0x97 JUMPI DUP1 PUSH4 0xA36701A9 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xA36701A9 EQ PUSH2 0x669 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x772 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x7A0 JUMPI DUP1 PUSH4 0xF2FDE38B EQ PUSH2 0x869 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x715018A6 EQ PUSH2 0x607 JUMPI DUP1 PUSH4 0x76CDB03B EQ PUSH2 0x60F JUMPI DUP1 PUSH4 0x8DA5CB5B EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x63B JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH4 0x1F7B6D32 GT PUSH2 0xD3 JUMPI DUP1 PUSH4 0x1F7B6D32 EQ PUSH2 0x204 JUMPI DUP1 PUSH4 0x2825DF7B EQ PUSH2 0x20C JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x2D3 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x494 JUMPI PUSH2 0xF4 JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xF9 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x137 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x172 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x125 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x10F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x88F JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x14D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x8FE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x18F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x188 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x91D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1C9 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B1 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1F6 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x125 PUSH2 0x9B5 JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x222 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x255 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x276 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 PUSH1 0x20 DUP2 ADD SWAP1 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x293 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x9BB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x2E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x31C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x32E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x39E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3D1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x420 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x453 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xB86 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x5B7 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x4AA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4D6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x546 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x579 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xE84 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5F3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x5DB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x2D1 PUSH2 0xF70 JUMP JUMPDEST PUSH2 0x617 PUSH2 0x102E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x617 PUSH2 0x103D JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x651 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x104D JUMP JUMPDEST PUSH2 0x686 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x67F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x113C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x6D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x6BB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x700 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP DUP4 DUP2 SUB DUP3 MSTORE DUP5 MLOAD DUP2 MSTORE DUP5 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 DUP7 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x733 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x71B JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x760 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x15E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x788 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1275 JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x828 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x12A3 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x2D1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x87F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x146E JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x8D6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DD3 PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x9A9 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x97E JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x9A9 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x98C JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x80 DUP2 ADD DUP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP10 SWAP1 MSTORE DUP3 MLOAD PUSH1 0x1F DUP9 ADD DUP3 SWAP1 DIV DUP3 MUL DUP2 ADD DUP3 ADD DUP5 MSTORE DUP8 DUP2 MSTORE SWAP2 SWAP3 DUP4 ADD SWAP2 SWAP1 DUP9 SWAP1 DUP9 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP POP POP SWAP1 DUP3 MSTORE POP PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F DUP8 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP6 DUP2 MSTORE SWAP2 DUP2 ADD SWAP2 SWAP1 DUP7 SWAP1 DUP7 SWAP1 DUP2 SWAP1 DUP5 ADD DUP4 DUP3 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD DUP3 SWAP1 MSTORE POP SWAP4 SWAP1 SWAP5 MSTORE POP POP DUP4 DUP2 MSTORE PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP5 MLOAD DUP2 SSTORE DUP5 DUP3 ADD MLOAD PUSH1 0x1 DUP3 ADD SSTORE SWAP2 DUP5 ADD MLOAD DUP1 MLOAD SWAP3 SWAP4 POP PUSH2 0xA85 SWAP3 PUSH1 0x2 DUP6 ADD SWAP3 SWAP2 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST POP PUSH1 0x60 DUP3 ADD MLOAD DUP1 MLOAD PUSH2 0xAA1 SWAP2 PUSH1 0x3 DUP5 ADD SWAP2 PUSH1 0x20 SWAP1 SWAP2 ADD SWAP1 PUSH2 0x1C38 JUMP JUMPDEST POP SWAP1 POP POP PUSH2 0xAC0 CALLER DUP3 DUP9 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x1583 JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH2 0xAE9 SWAP1 CALLER SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 DUP10 PUSH2 0xAE4 PUSH2 0xADF PUSH2 0x103D JUMP JUMPDEST PUSH2 0x168B JUMP JUMPDEST PUSH2 0x12A3 JUMP JUMPDEST DUP1 PUSH32 0xD98D7D262EE69A0E7F1E002C08E8F5432B5B407F3FBC7DACF22C4901C3B9FFB8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP8 DUP8 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x1F ADD PUSH1 0x1F NOT AND SWAP1 SWAP2 ADD DUP5 DUP2 SUB DUP4 MSTORE DUP6 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 POP DUP6 DUP6 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 MLOAD PUSH1 0x1F SWAP1 SWAP2 ADD PUSH1 0x1F NOT AND SWAP1 SWAP3 ADD DUP3 SWAP1 SUB SWAP10 POP SWAP1 SWAP8 POP POP POP POP POP POP POP POP LOG2 POP POP POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xBC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F20 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xC0B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xC13 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xC3E JUMPI POP PUSH2 0xC3E DUP6 PUSH2 0xC39 PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x1275 JUMP JUMPDEST PUSH2 0xC79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E72 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xC83 PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0xC93 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xE7C JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD94 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xCAD JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xCC5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xD32 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EA4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x1706 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xD69 SWAP1 DUP3 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0xC96 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE1A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE02 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xE59 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xE41 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xE7C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17FE JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xEC6 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1EF7 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xEE0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xF0A JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xF68 JUMPI PUSH2 0xF49 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF28 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xF3C JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x88F JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xF55 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xF10 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF78 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xF89 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xFE4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0x0 SWAP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 DUP4 SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 JUMP JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND JUMPDEST SWAP1 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x105F PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1ECE PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0x10B2 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x10F6 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x7 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP4 ADD SLOAD PUSH1 0x2 DUP1 DUP6 ADD DUP1 SLOAD DUP9 MLOAD SWAP5 DUP2 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD AND SWAP2 SWAP1 SWAP2 DIV PUSH1 0x1F DUP2 ADD DUP8 SWAP1 DIV DUP8 MUL DUP5 ADD DUP8 ADD SWAP1 SWAP8 MSTORE DUP7 DUP4 MSTORE SWAP3 SWAP6 SWAP1 SWAP5 SWAP2 SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x11DB JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x11B0 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x11DB JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x11BE JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP PUSH1 0x3 DUP4 ADD DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP5 SWAP6 SWAP5 SWAP4 POP SWAP1 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x126B JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x1240 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x126B JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x124E JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP DUP5 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x12E8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E4D PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x12F0 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x1316 JUMPI POP PUSH2 0x1316 DUP6 PUSH2 0xC39 PUSH2 0x1702 JUMP JUMPDEST PUSH2 0x1351 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1E24 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x135B PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0x137B DUP2 DUP8 DUP8 PUSH2 0x136C DUP9 PUSH2 0x1A7D JUMP JUMPDEST PUSH2 0x1375 DUP9 PUSH2 0x1A7D JUMP JUMPDEST DUP8 PUSH2 0xE7C JUMP JUMPDEST PUSH2 0x13C2 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1EA4 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x1706 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x13F9 SWAP1 DUP5 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xE7C DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1AC1 JUMP JUMPDEST PUSH2 0x1476 PUSH2 0x1702 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1487 PUSH2 0x103D JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0x14E2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4F776E61626C653A2063616C6C6572206973206E6F7420746865206F776E6572 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND PUSH2 0x1527 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x26 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DFE PUSH1 0x26 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x4 SLOAD PUSH1 0x40 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND SWAP3 AND SWAP1 PUSH32 0x8BE0079C531659141344CD1FD0A4F28419497F9722A3DAAFE3B4186F6B6457E0 SWAP1 PUSH1 0x0 SWAP1 LOG3 PUSH1 0x4 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x15C8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1F48 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x15D2 PUSH2 0x1702 JUMP JUMPDEST SWAP1 POP PUSH2 0x15E4 DUP2 PUSH1 0x0 DUP8 PUSH2 0x136C DUP9 PUSH2 0x1A7D JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x1611 SWAP1 DUP5 PUSH2 0x179D JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP3 DUP4 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD SWAP1 SWAP5 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x1684 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x1AC1 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x14 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP4 DUP4 SHL SWAP2 DUP4 SWAP2 PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP PUSH1 0x0 JUMPDEST PUSH1 0x14 DUP2 PUSH1 0xFF AND LT ISZERO PUSH2 0xF68 JUMPI DUP3 DUP2 PUSH1 0xFF AND PUSH1 0x14 DUP2 LT PUSH2 0x16D0 JUMPI INVALID JUMPDEST BYTE PUSH1 0xF8 SHL DUP3 DUP3 PUSH1 0xFF AND DUP2 MLOAD DUP2 LT PUSH2 0x16E3 JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0x1 ADD PUSH2 0x16B5 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x1795 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x175A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1742 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1787 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x17F7 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x1810 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C32 JUMP JUMPDEST ISZERO PUSH2 0xE7C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x189E JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1886 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18DD JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x18C5 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1919 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1901 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1946 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x196B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1990 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x198B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x1A25 JUMPI PUSH2 0x199C PUSH2 0x1CD1 JUMP JUMPDEST DUP1 PUSH2 0x19A7 JUMPI POP PUSH2 0x19EE JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x175A JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1742 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1D77 PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DAB PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1AB0 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x1AD3 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x1C32 JUMP JUMPDEST ISZERO PUSH2 0xE7C JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1B62 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1B4A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1B8F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1BB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x1BD7 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1BD2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x1BE3 JUMPI PUSH2 0x199C PUSH2 0x1CD1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x1A74 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1DAB PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x1C79 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x1CA6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x1CA6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x1CA6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x1C8B JUMP JUMPDEST POP PUSH2 0x1CB2 SWAP3 SWAP2 POP PUSH2 0x1CB6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x1CB2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x1CB7 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1CE1 JUMPI PUSH2 0x104A JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x1CF5 DUP3 MLOAD PUSH2 0x1CCB JUMP JUMPDEST EQ PUSH2 0x1CFF JUMPI PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1D2F JUMPI POP POP POP POP PUSH2 0x104A JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x1D49 JUMPI POP POP POP POP PUSH2 0x104A JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x1D61 JUMPI POP POP POP PUSH2 0x104A JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734F776E61626C653A206E6577206F776E PUSH6 0x722069732074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH4 0x616C6C65 PUSH19 0x206973206E6F74206F776E6572206E6F722061 PUSH17 0x70726F766564455243313135353A207472 PUSH2 0x6E73 PUSH7 0x657220746F2074 PUSH9 0x65207A65726F206164 PUSH5 0x7265737345 MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0x455243313135353A20 PUSH14 0x696E7420746F20746865207A6572 PUSH16 0x2061646472657373A264697066735822 SLT KECCAK256 SWAP8 MUL 0x28 0x2F DIV 0xD6 CALLCODE 0xE9 LOG0 COINBASE NUMBER 0xD3 0xF7 0x25 0xD5 0xC8 SWAP3 0xFC 0x23 LOG2 SUB 0xAC EXTCODESIZE CODECOPY 0xD6 0xF6 SWAP10 LOG3 PUSH14 0xEC15A764736F6C634300060C0033 ", + "sourceMap": "306:1099:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:228:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2976:228:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;2729:105:4;;;;;;;;;;;;;;;;-1:-1:-1;2729:105:4;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;368:25:23;;;:::i;759:355::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;759:355:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;759:355:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;759:355:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;759:355:23;;;;;;;;;;-1:-1:-1;759:355:23;;-1:-1:-1;759:355:23;-1:-1:-1;759:355:23;:::i;:::-;;5534:1184:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4:i;3361:530::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:145:0;;;:::i;399:20:23:-;;;:::i;:::-;;;;-1:-1:-1;;;;;399:20:23;;;;;;;;;;;;;;1085:85:0;;;:::i;3959:306:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3959:306:4;;;;;;;;;;:::i;618:41:23:-;;;;;;;;;;;;;;;;-1:-1:-1;618:41:23;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;618:41:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4332:166:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4332:166:4;;;;;;;;;;:::i;4565:897::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4565:897:4;;-1:-1:-1;4565:897:4;;-1:-1:-1;;;;;4565:897:4:i;2011:240:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2011:240:0;-1:-1:-1;;;;;2011:240:0;;:::i;2976:228:4:-;3062:7;-1:-1:-1;;;;;3089:21:4;;3081:77;;;;-1:-1:-1;;;3081:77:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3175:13:4;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3175:22:4;;;;;;;;;;;;2976:228::o;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;1050:4;1073:33;;;;;;;;;;;;;;965:148::o;2729:105:4:-;2823:4;2816:11;;;;;;;;-1:-1:-1;;2816:11:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:13;;2816:11;;2823:4;;2816:11;;2823:4;2816:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:105;;;:::o;368:25:23:-;;;;:::o;759:355::-;868:6;866:8;;;;;;;;899:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;916:4;;;;;;899:29;;916:4;;;;899:29;;;;;;;;;-1:-1:-1;;;899:29:23;;;-1:-1:-1;899:29:23;;;;;;;;;;;;;;;;;;;;;;;;;;;922:5;;;;;;899:29;;922:5;;;;899:29;;;;;;;;-1:-1:-1;899:29:23;;;;-1:-1:-1;;884:12:23;;;:8;:12;;;;;;;;;:44;;;;;;;;;;;;;;;;;;:12;;-1:-1:-1;884:44:23;;;;;;;;;;;;:::i;:::-;-1:-1:-1;884:44:23;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;939:33;945:10;957:2;961:6;939:33;;;;;;;;;;;;:5;:33::i;:::-;1019:4;;982:80;;999:10;;-1:-1:-1;;;;;1019:4:23;1026:2;1030:6;1038:23;1053:7;:5;:7::i;:::-;1038:14;:23::i;:::-;982:16;:80::i;:::-;1083:2;1078:29;1087:6;1095:4;;1101:5;;1078:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1078:29:23;;;;;;;;;;;;;;;-1:-1:-1;1078:29:23;;;;;;;;;;;;;;;;;-1:-1:-1;;1078:29:23;;;;;;;;-1:-1:-1;1078:29:23;;-1:-1:-1;;;;;;;;1078:29:23;759:355;;;;;;:::o;5534:1184:4:-;5788:7;:14;5774:3;:10;:28;5766:81;;;;-1:-1:-1;;;5766:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5865:16:4;;5857:66;;;;-1:-1:-1;;;5857:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:12;:10;:12::i;:::-;-1:-1:-1;;;;;5954:20:4;:4;-1:-1:-1;;;;;5954:20:4;;:60;;;;5978:36;5995:4;6001:12;:10;:12::i;:::-;5978:16;:36::i;:::-;5933:157;;;;-1:-1:-1;;;5933:157:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6101:16;6120:12;:10;:12::i;:::-;6101:31;;6143:60;6164:8;6174:4;6180:2;6184:3;6189:7;6198:4;6143:20;:60::i;:::-;6219:9;6214:349;6238:3;:10;6234:1;:14;6214:349;;;6269:10;6282:3;6286:1;6282:6;;;;;;;;;;;;;;6269:19;;6302:14;6319:7;6327:1;6319:10;;;;;;;;;;;;;;6302:27;;6366:123;6407:6;6366:123;;;;;;;;;;;;;;;;;:9;:13;6376:2;6366:13;;;;;;;;;;;:19;6380:4;-1:-1:-1;;;;;6366:19:4;-1:-1:-1;;;;;6366:19:4;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6344:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6344:19:4;;;;;;;;;;:145;;;;6523:17;;;;;;:29;;6545:6;6523:21;:29::i;:::-;6503:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6503:17:4;;;;;;;;;;:49;-1:-1:-1;6250:3:4;6214:349;;;;6608:2;-1:-1:-1;;;;;6578:47:4;6602:4;-1:-1:-1;;;;;6578:47:4;6592:8;-1:-1:-1;;;;;6578:47:4;;6612:3;6617:7;6578:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6636:75;6672:8;6682:4;6688:2;6692:3;6697:7;6706:4;6636:35;:75::i;:::-;5534:1184;;;;;;:::o;3361:530::-;3534:16;3593:3;:10;3574:8;:15;:29;3566:83;;;;-1:-1:-1;;;3566:83:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3660:30;3707:8;:15;3693:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:30:4;;3660:63;;3739:9;3734:120;3758:8;:15;3754:1;:19;3734:120;;;3813:30;3823:8;3832:1;3823:11;;;;;;;;;;;;;;3836:3;3840:1;3836:6;;;;;;;;;;;;;;3813:9;:30::i;:::-;3794:13;3808:1;3794:16;;;;;;;;;;;;;;;;;:49;3775:3;;3734:120;;;-1:-1:-1;3871:13:4;3361:530;-1:-1:-1;;;3361:530:4:o;1717:145:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1807:6:::1;::::0;1786:40:::1;::::0;1823:1:::1;::::0;-1:-1:-1;;;;;1807:6:0::1;::::0;1786:40:::1;::::0;1823:1;;1786:40:::1;1836:6;:19:::0;;-1:-1:-1;;;;;;1836:19:0::1;::::0;;1717:145::o;399:20:23:-;;;-1:-1:-1;;;;;399:20:23;;:::o;1085:85:0:-;1157:6;;-1:-1:-1;;;;;1157:6:0;1085:85;;:::o;3959:306:4:-;4077:8;-1:-1:-1;;;;;4061:24:4;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4061:24:4;;;4053:78;;;;-1:-1:-1;;;4053:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:8;4142:18;:32;4161:12;:10;:12::i;:::-;-1:-1:-1;;;;;4142:32:4;;;;;;;;;;;;;;;;;-1:-1:-1;4142:32:4;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;4142:53:4;;;;;;;;;;;4225:12;:10;:12::i;:::-;-1:-1:-1;;;;;4210:48:4;;4249:8;4210:48;;;;;;;;;;;;;;;;;;;;3959:306;;:::o;618:41:23:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;618:41:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;618:41:23;;;;;;;;;;;;;;;;-1:-1:-1;;618:41:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;618:41:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4332:166:4:-;-1:-1:-1;;;;;4454:27:4;;;4431:4;4454:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4332:166::o;4565:897::-;-1:-1:-1;;;;;4780:16:4;;4772:66;;;;-1:-1:-1;;;4772:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:12;:10;:12::i;:::-;-1:-1:-1;;;;;4869:20:4;:4;-1:-1:-1;;;;;4869:20:4;;:60;;;;4893:36;4910:4;4916:12;:10;:12::i;4893:36::-;4848:148;;;;-1:-1:-1;;;4848:148:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5007:16;5026:12;:10;:12::i;:::-;5007:31;;5049:96;5070:8;5080:4;5086:2;5090:21;5108:2;5090:17;:21::i;:::-;5113:25;5131:6;5113:17;:25::i;:::-;5140:4;5049:20;:96::i;:::-;5178:77;5202:6;5178:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5178:19:4;;;;;;;;;;;:77;:23;:77::i;:::-;5156:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5156:19:4;;;;;;;;;;:99;;;;5285:17;;;;;;:29;;5307:6;5285:21;:29::i;:::-;5265:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5265:17:4;;;;;;;;;;;;;:49;;;;5330:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:68;5418:8;5428:4;5434:2;5438;5442:6;5450:4;5387:30;:68::i;2011:240:0:-;1308:12;:10;:12::i;:::-;-1:-1:-1;;;;;1297:23:0;:7;:5;:7::i;:::-;-1:-1:-1;;;;;1297:23:0;;1289:68;;;;;-1:-1:-1;;;1289:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2099:22:0;::::1;2091:73;;;;-1:-1:-1::0;;;2091:73:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2200:6;::::0;2179:38:::1;::::0;-1:-1:-1;;;;;2179:38:0;;::::1;::::0;2200:6:::1;::::0;2179:38:::1;::::0;2200:6:::1;::::0;2179:38:::1;2227:6;:17:::0;;-1:-1:-1;;;;;;2227:17:0::1;-1:-1:-1::0;;;;;2227:17:0;;;::::1;::::0;;;::::1;::::0;;2011:240::o;8015:572:4:-;-1:-1:-1;;;;;8129:21:4;;8121:67;;;;-1:-1:-1;;;8121:67:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:16;8218:12;:10;:12::i;:::-;8199:31;;8241:107;8262:8;8280:1;8284:7;8293:21;8311:2;8293:17;:21::i;8241:107::-;8384:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8384:22:4;;;;;;;;;;:34;;8411:6;8384:26;:34::i;:::-;8359:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8359:22:4;;;;;;;;;;;;:59;;;;8433:57;;;;;;;;;;;;;8359:22;;8433:57;;;;;;;;;;;;8501:79;8532:8;8550:1;8554:7;8563:2;8567:6;8575:4;8501:30;:79::i;:::-;8015:572;;;;;:::o;1121:282:23:-;1277:13;;;1287:2;1277:13;;;;;;;;;1182:12;;1226:22;;;;1182:12;;1277:13;;;;;;;;;;-1:-1:-1;1277:13:23;1258:32;;1305:7;1300:77;1322:2;1318:1;:6;;;1300:77;;;1354:9;1364:1;1354:12;;;;;;;;;;;;1345:3;1349:1;1345:6;;;;;;;;;;;;;:21;-1:-1:-1;;;;;1345:21:23;;;;;;;;-1:-1:-1;1326:3:23;;1300:77;;598:104:16;685:10;598:104;:::o;5432:163:3:-;5518:7;5553:12;5545:6;;;;5537:29;;;;-1:-1:-1;;;5537:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:3;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:3:o;13240:778:4:-;13484:15;:2;-1:-1:-1;;;;;13484:13:4;;:15::i;:::-;13480:532;;;13536:2;-1:-1:-1;;;;;13519:43:4;;13563:8;13573:4;13579:3;13584:7;13593:4;13519:79;;;;;;;;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13519:79:4;;;13515:487;;;;:::i;:::-;;;;;;;;13871:14;;-1:-1:-1;;;13871:14:4;;;;;;;;;;;;;;;;;13878:6;;13871:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;13925:62;;-1:-1:-1;;;13925:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;-1:-1:-1;;;;;;13647:64:4;;-1:-1:-1;;;13647:64:4;13643:161;;13735:50;;-1:-1:-1;;;13735:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13643:161;13599:219;13240:778;;;;;;:::o;14024:193::-;14143:16;;;14157:1;14143:16;;;;;;;;;14090;;;;14143;;;;;;;;;;;;-1:-1:-1;14143:16:4;14118:41;;14180:7;14169:5;14175:1;14169:8;;;;;;;;;;;;;;;;;:18;14205:5;14024:193;-1:-1:-1;;14024:193:4:o;12493:741::-;12712:15;:2;-1:-1:-1;;;;;12712:13:4;;:15::i;:::-;12708:520;;;12764:2;-1:-1:-1;;;;;12747:38:4;;12786:8;12796:4;12802:2;12806:6;12814:4;12747:72;;;;;;;;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12747:72:4;;;12743:475;;;;:::i;:::-;-1:-1:-1;;;;;;12868:59:4;;-1:-1:-1;;;12868:59:4;12864:156;;12951:50;;-1:-1:-1;;;12951:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:413:15;1086:20;1124:8;;;726:413::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;110:106;195:3;191:15;;163:53::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;:::i;:::-;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;:::o" + }, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "bank()": "76cdb03b", + "idToItem(uint256)": "a36701a9", + "isApprovedForAll(address,address)": "e985e9c5", + "length()": "1f7b6d32", + "mint(uint256,string,string)": "2825df7b", + "owner()": "8da5cb5b", + "renounceOwnership()": "715018a6", + "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6", + "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "transferOwnership(address)": "f2fde38b", + "uri(uint256)": "0e89341c" + } + } + } + }, + "contracts/test/TestNFT1155.sol": { + "TestNFT1155": { + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mintBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b5060408051808201909152600b81526a546573744e46543131353560a81b6020820152620000466301ffc9a760e01b6200007c565b620000518162000101565b62000063636cdb3d1360e11b6200007c565b620000756303a24d0760e21b6200007c565b50620001b6565b6001600160e01b03198082161415620000dc576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001169060039060208401906200011a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015d57805160ff19168380011785556200018d565b828001600101855582156200018d579182015b828111156200018d57825182559160200191906001019062000170565b506200019b9291506200019f565b5090565b5b808211156200019b5760008155600101620001a0565b611bd080620001c66000396000f3fe608060405234801561001057600080fd5b506004361061009d5760003560e01c80634e1273f4116100665780634e1273f414610528578063731133e91461069b578063a22cb4651461075b578063e985e9c514610789578063f242432a146107b75761009d565b8062fdd58e146100a257806301ffc9a7146100e05780630e89341c1461011b5780631f7fdffa146101ad5780632eb2c2d614610367575b600080fd5b6100ce600480360360408110156100b857600080fd5b506001600160a01b038135169060200135610880565b60408051918252519081900360200190f35b610107600480360360208110156100f657600080fd5b50356001600160e01b0319166108ef565b604080519115158252519081900360200190f35b6101386004803603602081101561013157600080fd5b503561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610365600480360360808110156101c357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026f57600080fd5b82018360208201111561028157600080fd5b803590602001918460208302840111600160201b831117156102a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111600160201b8311171561032457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a6945050505050565b005b610365600480360360a081101561037d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460208302840111600160201b8311171561046557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104b457600080fd5b8201836020820111156104c657600080fd5b803590602001918460018302840111600160201b831117156104e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b8945050505050565b61064b6004803603604081101561053e57600080fd5b810190602081018135600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460208302840111600160201b8311171561058b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105da57600080fd5b8201836020820111156105ec57600080fd5b803590602001918460208302840111600160201b8311171561060d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cb6945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068757818101518382015260200161066f565b505050509050019250505060405180910390f35b610365600480360360808110156106b157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106e757600080fd5b8201836020820111156106f957600080fd5b803590602001918460018302840111600160201b8311171561071a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610da2945050505050565b6103656004803603604081101561077157600080fd5b506001600160a01b0381351690602001351515610dae565b6101076004803603604081101561079f57600080fd5b506001600160a01b0381358116916020013516610e9d565b610365600480360360a08110156107cd57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ecb945050505050565b60006001600160a01b0383166108c75760405162461bcd60e51b815260040180806020018281038252602b815260200180611a2b602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561099a5780601f1061096f5761010080835404028352916020019161099a565b820191906000526020600020905b81548152906001019060200180831161097d57829003601f168201915b50505050509050919050565b6109b284848484611096565b50505050565b81518351146109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b6001600160a01b038416610a3d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610a456112eb565b6001600160a01b0316856001600160a01b03161480610a705750610a7085610a6b6112eb565b610e9d565b610aab5760405162461bcd60e51b8152600401808060200182810382526032815260200180611aa46032913960400191505060405180910390fd5b6000610ab56112eb565b9050610ac5818787878787610cae565b60005b8451811015610bc6576000858281518110610adf57fe5b602002602001015190506000858381518110610af757fe5b60200260200101519050610b64816040518060600160405280602a8152602001611ad6602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546112f09092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610b9b9082611387565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610ac8565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610c4c578181015183820152602001610c34565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610c8b578181015183820152602001610c73565b5050505090500194505050505060405180910390a4610cae8187878787876113e8565b505050505050565b60608151835114610cf85760405162461bcd60e51b8152600401808060200182810382526029815260200180611b296029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610d1257600080fd5b50604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b50905060005b8451811015610d9a57610d7b858281518110610d5a57fe5b6020026020010151858381518110610d6e57fe5b6020026020010151610880565b828281518110610d8757fe5b6020908102919091010152600101610d42565b509392505050565b6109b284848484611667565b816001600160a01b0316610dc06112eb565b6001600160a01b03161415610e065760405162461bcd60e51b8152600401808060200182810382526029815260200180611b006029913960400191505060405180910390fd5b8060026000610e136112eb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610e576112eb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610f105760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610f186112eb565b6001600160a01b0316856001600160a01b03161480610f3e5750610f3e85610a6b6112eb565b610f795760405162461bcd60e51b8152600401808060200182810382526029815260200180611a566029913960400191505060405180910390fd5b6000610f836112eb565b9050610fa3818787610f9488611768565b610f9d88611768565b87610cae565b610fea836040518060600160405280602a8152602001611ad6602a913960008781526001602090815260408083206001600160a01b038d16845290915290205491906112f0565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546110219084611387565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610cae8187878787876117ac565b6001600160a01b0384166110db5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b815183511461111b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b60006111256112eb565b905061113681600087878787610cae565b60005b84518110156111fa576111b16001600087848151811061115557fe5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061119b57fe5b602002602001015161138790919063ffffffff16565b600160008784815181106111c157fe5b602090810291909101810151825281810192909252604090810160009081206001600160a01b038b168252909252902055600101611139565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611281578181015183820152602001611269565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156112c05781810151838201526020016112a8565b5050505090500194505050505060405180910390a46112e4816000878787876113e8565b5050505050565b335b90565b6000818484111561137f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134457818101518382015260200161132c565b50505050905090810190601f1680156113715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6113fa846001600160a01b031661191d565b15610cae57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611488578181015183820152602001611470565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156114c75781810151838201526020016114af565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115035781810151838201526020016114eb565b50505050905090810190601f1680156115305780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561155557600080fd5b505af192505050801561157a57506040513d602081101561157557600080fd5b505160015b61160f57611586611929565b8061159157506115d8565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561134457818101518382015260200161132c565b60405162461bcd60e51b81526004018080602001828103825260348152602001806119cf6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0384166116ac5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b60006116b66112eb565b90506116c881600087610f9488611768565b60008481526001602090815260408083206001600160a01b03891684529091529020546116f59084611387565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a46112e4816000878787876117ac565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061179b57fe5b602090810291909101015292915050565b6117be846001600160a01b031661191d565b15610cae57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561184d578181015183820152602001611835565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561189d57600080fd5b505af19250505080156118c257506040513d60208110156118bd57600080fd5b505160015b6118ce57611586611929565b6001600160e01b0319811663f23a6e6160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d1015611939576112ed565b600481823e6308c379a061194d8251611923565b14611957576112ed565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561198757505050506112ed565b828401925082519150808211156119a157505050506112ed565b503d830160208284010111156119b9575050506112ed565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220f4b453b2c3187a713b45299ad9f641ddd1cb606ec1c4a9781dc891c1e7bb6a7664736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0xB DUP2 MSTORE PUSH11 0x546573744E465431313535 PUSH1 0xA8 SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH3 0x46 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0x7C JUMP JUMPDEST PUSH3 0x51 DUP2 PUSH3 0x101 JUMP JUMPDEST PUSH3 0x63 PUSH4 0x6CDB3D13 PUSH1 0xE1 SHL PUSH3 0x7C JUMP JUMPDEST PUSH3 0x75 PUSH4 0x3A24D07 PUSH1 0xE2 SHL PUSH3 0x7C JUMP JUMPDEST POP PUSH3 0x1B6 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0xDC JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP1 MLOAD PUSH3 0x116 SWAP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x11A JUMP JUMPDEST POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x15D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x18D JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x18D JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x18D JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x170 JUMP JUMPDEST POP PUSH3 0x19B SWAP3 SWAP2 POP PUSH3 0x19F JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x19B JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1A0 JUMP JUMPDEST PUSH2 0x1BD0 DUP1 PUSH3 0x1C6 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x75B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x789 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x7B7 JUMPI PUSH2 0x9D JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x367 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A6 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xCB6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x687 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x66F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xDA2 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xE9D JUMP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xECB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A2B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x99A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x97D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9B2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1096 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x9F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B52 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A7F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA45 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA70 JUMPI POP PUSH2 0xA70 DUP6 PUSH2 0xA6B PUSH2 0x12EB JUMP JUMPDEST PUSH2 0xE9D JUMP JUMPDEST PUSH2 0xAAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AA4 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB5 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0xAC5 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xADF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xAF7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xB64 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD6 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x12F0 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB9B SWAP1 DUP3 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0xAC8 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC34 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC8B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xCAE DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x13E8 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xCF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B29 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD3C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD9A JUMPI PUSH2 0xD7B DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD6E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x880 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD87 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x9B2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1667 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC0 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B00 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0xE13 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xE57 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xF10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A7F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF18 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xF3E JUMPI POP PUSH2 0xF3E DUP6 PUSH2 0xA6B PUSH2 0x12EB JUMP JUMPDEST PUSH2 0xF79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A56 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0xFA3 DUP2 DUP8 DUP8 PUSH2 0xF94 DUP9 PUSH2 0x1768 JUMP JUMPDEST PUSH2 0xF9D DUP9 PUSH2 0x1768 JUMP JUMPDEST DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xFEA DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD6 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x12F0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1021 SWAP1 DUP5 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xCAE DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B7A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x111B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B52 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1125 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0x1136 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x11FA JUMPI PUSH2 0x11B1 PUSH1 0x1 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1155 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1387 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11C1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP3 MSTORE SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1139 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1269 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12C0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x12E4 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x13E8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1344 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x132C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1371 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x13E1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13FA DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x191D JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1488 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1470 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14AF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1503 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14EB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1530 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x157A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x160F JUMPI PUSH2 0x1586 PUSH2 0x1929 JUMP JUMPDEST DUP1 PUSH2 0x1591 JUMPI POP PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1344 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x132C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x165E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A03 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x16AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B7A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16B6 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0x16C8 DUP2 PUSH1 0x0 DUP8 PUSH2 0xF94 DUP9 PUSH2 0x1768 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x16F5 SWAP1 DUP5 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP3 DUP4 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD SWAP1 SWAP5 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x12E4 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x179B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17BE DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x191D JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x184D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1835 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x187A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x189D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x18C2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x18CE JUMPI PUSH2 0x1586 PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x165E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A03 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1939 JUMPI PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x194D DUP3 MLOAD PUSH2 0x1923 JUMP JUMPDEST EQ PUSH2 0x1957 JUMPI PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1987 JUMPI POP POP POP POP PUSH2 0x12ED JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x19A1 JUMPI POP POP POP POP PUSH2 0x12ED JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x19B9 JUMPI POP POP POP PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x657373455243313135353A2063616C6C657220 PUSH10 0x73206E6F74206F776E65 PUSH19 0x206E6F7220617070726F766564455243313135 CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0x455243313135353A20 PUSH14 0x696E7420746F20746865207A6572 PUSH16 0x2061646472657373A264697066735822 SLT KECCAK256 DELEGATECALL 0xB4 MSTORE8 0xB2 0xC3 XOR PUSH27 0x713B45299AD9F641DDD1CB606EC1C4A9781DC891C1E7BB6A766473 PUSH16 0x6C634300060C00330000000000000000 ", + "sourceMap": "127:390:24:-:0;;;181:28;;;;;;;;;-1:-1:-1;1976:354:4;;;;;;;;;;;;-1:-1:-1;;;1976:354:4;;;;768:40:1;-1:-1:-1;;;768:18:1;:40::i;:::-;2026:13:4;2034:4;2026:7;:13::i;:::-;2128:41;-1:-1:-1;;;2128:18:4;:41::i;:::-;2269:54;-1:-1:-1;;;2269:18:4;:54::i;:::-;1976:354;127:390:24;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;7541:86:4:-;7607:13;;;;:4;;:13;;;;;:::i;:::-;;7541:86;:::o;127:390:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;127:390:24;;;-1:-1:-1;127:390:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061009d5760003560e01c80634e1273f4116100665780634e1273f414610528578063731133e91461069b578063a22cb4651461075b578063e985e9c514610789578063f242432a146107b75761009d565b8062fdd58e146100a257806301ffc9a7146100e05780630e89341c1461011b5780631f7fdffa146101ad5780632eb2c2d614610367575b600080fd5b6100ce600480360360408110156100b857600080fd5b506001600160a01b038135169060200135610880565b60408051918252519081900360200190f35b610107600480360360208110156100f657600080fd5b50356001600160e01b0319166108ef565b604080519115158252519081900360200190f35b6101386004803603602081101561013157600080fd5b503561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610365600480360360808110156101c357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026f57600080fd5b82018360208201111561028157600080fd5b803590602001918460208302840111600160201b831117156102a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111600160201b8311171561032457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a6945050505050565b005b610365600480360360a081101561037d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460208302840111600160201b8311171561046557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104b457600080fd5b8201836020820111156104c657600080fd5b803590602001918460018302840111600160201b831117156104e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b8945050505050565b61064b6004803603604081101561053e57600080fd5b810190602081018135600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460208302840111600160201b8311171561058b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105da57600080fd5b8201836020820111156105ec57600080fd5b803590602001918460208302840111600160201b8311171561060d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cb6945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068757818101518382015260200161066f565b505050509050019250505060405180910390f35b610365600480360360808110156106b157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106e757600080fd5b8201836020820111156106f957600080fd5b803590602001918460018302840111600160201b8311171561071a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610da2945050505050565b6103656004803603604081101561077157600080fd5b506001600160a01b0381351690602001351515610dae565b6101076004803603604081101561079f57600080fd5b506001600160a01b0381358116916020013516610e9d565b610365600480360360a08110156107cd57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ecb945050505050565b60006001600160a01b0383166108c75760405162461bcd60e51b815260040180806020018281038252602b815260200180611a2b602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561099a5780601f1061096f5761010080835404028352916020019161099a565b820191906000526020600020905b81548152906001019060200180831161097d57829003601f168201915b50505050509050919050565b6109b284848484611096565b50505050565b81518351146109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b6001600160a01b038416610a3d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610a456112eb565b6001600160a01b0316856001600160a01b03161480610a705750610a7085610a6b6112eb565b610e9d565b610aab5760405162461bcd60e51b8152600401808060200182810382526032815260200180611aa46032913960400191505060405180910390fd5b6000610ab56112eb565b9050610ac5818787878787610cae565b60005b8451811015610bc6576000858281518110610adf57fe5b602002602001015190506000858381518110610af757fe5b60200260200101519050610b64816040518060600160405280602a8152602001611ad6602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546112f09092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610b9b9082611387565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610ac8565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610c4c578181015183820152602001610c34565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610c8b578181015183820152602001610c73565b5050505090500194505050505060405180910390a4610cae8187878787876113e8565b505050505050565b60608151835114610cf85760405162461bcd60e51b8152600401808060200182810382526029815260200180611b296029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610d1257600080fd5b50604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b50905060005b8451811015610d9a57610d7b858281518110610d5a57fe5b6020026020010151858381518110610d6e57fe5b6020026020010151610880565b828281518110610d8757fe5b6020908102919091010152600101610d42565b509392505050565b6109b284848484611667565b816001600160a01b0316610dc06112eb565b6001600160a01b03161415610e065760405162461bcd60e51b8152600401808060200182810382526029815260200180611b006029913960400191505060405180910390fd5b8060026000610e136112eb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610e576112eb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610f105760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610f186112eb565b6001600160a01b0316856001600160a01b03161480610f3e5750610f3e85610a6b6112eb565b610f795760405162461bcd60e51b8152600401808060200182810382526029815260200180611a566029913960400191505060405180910390fd5b6000610f836112eb565b9050610fa3818787610f9488611768565b610f9d88611768565b87610cae565b610fea836040518060600160405280602a8152602001611ad6602a913960008781526001602090815260408083206001600160a01b038d16845290915290205491906112f0565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546110219084611387565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610cae8187878787876117ac565b6001600160a01b0384166110db5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b815183511461111b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b60006111256112eb565b905061113681600087878787610cae565b60005b84518110156111fa576111b16001600087848151811061115557fe5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061119b57fe5b602002602001015161138790919063ffffffff16565b600160008784815181106111c157fe5b602090810291909101810151825281810192909252604090810160009081206001600160a01b038b168252909252902055600101611139565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611281578181015183820152602001611269565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156112c05781810151838201526020016112a8565b5050505090500194505050505060405180910390a46112e4816000878787876113e8565b5050505050565b335b90565b6000818484111561137f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134457818101518382015260200161132c565b50505050905090810190601f1680156113715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6113fa846001600160a01b031661191d565b15610cae57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611488578181015183820152602001611470565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156114c75781810151838201526020016114af565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115035781810151838201526020016114eb565b50505050905090810190601f1680156115305780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561155557600080fd5b505af192505050801561157a57506040513d602081101561157557600080fd5b505160015b61160f57611586611929565b8061159157506115d8565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561134457818101518382015260200161132c565b60405162461bcd60e51b81526004018080602001828103825260348152602001806119cf6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0384166116ac5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b60006116b66112eb565b90506116c881600087610f9488611768565b60008481526001602090815260408083206001600160a01b03891684529091529020546116f59084611387565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a46112e4816000878787876117ac565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061179b57fe5b602090810291909101015292915050565b6117be846001600160a01b031661191d565b15610cae57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561184d578181015183820152602001611835565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561189d57600080fd5b505af19250505080156118c257506040513d60208110156118bd57600080fd5b505160015b6118ce57611586611929565b6001600160e01b0319811663f23a6e6160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d1015611939576112ed565b600481823e6308c379a061194d8251611923565b14611957576112ed565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561198757505050506112ed565b828401925082519150808211156119a157505050506112ed565b503d830160208284010111156119b9575050506112ed565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220f4b453b2c3187a713b45299ad9f641ddd1cb606ec1c4a9781dc891c1e7bb6a7664736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9D JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4E1273F4 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x4E1273F4 EQ PUSH2 0x528 JUMPI DUP1 PUSH4 0x731133E9 EQ PUSH2 0x69B JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x75B JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x789 JUMPI DUP1 PUSH4 0xF242432A EQ PUSH2 0x7B7 JUMPI PUSH2 0x9D JUMP JUMPDEST DUP1 PUSH3 0xFDD58E EQ PUSH2 0xA2 JUMPI DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0xE0 JUMPI DUP1 PUSH4 0xE89341C EQ PUSH2 0x11B JUMPI DUP1 PUSH4 0x1F7FDFFA EQ PUSH2 0x1AD JUMPI DUP1 PUSH4 0x2EB2C2D6 EQ PUSH2 0x367 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xCE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0xB8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x8EF JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x138 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x131 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x90E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x172 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x15A JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x19F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x1C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x40 DUP2 ADD PUSH1 0x20 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x1ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x220 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x26F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x281 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x2F1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x303 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A6 SWAP5 POP POP POP POP POP JUMP JUMPDEST STOP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x37D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x3B0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x3E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x432 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x444 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x465 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x4B4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x4C6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x4E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9B8 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x64B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x53E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 PUSH1 0x20 DUP2 ADD DUP2 CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x558 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x56A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x58B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 SWAP5 SWAP4 PUSH1 0x20 DUP2 ADD SWAP4 POP CALLDATALOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x5DA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5EC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x60D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xCB6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 DUP2 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x687 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x66F JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x6B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x6E7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x6F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x71A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xDA2 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x771 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0xDAE JUMP JUMPDEST PUSH2 0x107 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x79F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xE9D JUMP JUMPDEST PUSH2 0x365 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x7CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0xA0 DUP2 ADD PUSH1 0x80 DUP3 ADD CALLDATALOAD PUSH1 0x1 PUSH1 0x20 SHL DUP2 GT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x81E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH1 0x1 PUSH1 0x20 SHL DUP4 GT OR ISZERO PUSH2 0x83F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0xECB SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH2 0x8C7 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A2B PUSH1 0x2B SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP5 SWAP1 SWAP5 AND DUP4 MSTORE SWAP3 SWAP1 MSTORE KECCAK256 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x3 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x99A JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x96F JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x99A JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x97D JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH2 0x9B2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1096 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x9F8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B52 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xA3D JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A7F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xA45 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xA70 JUMPI POP PUSH2 0xA70 DUP6 PUSH2 0xA6B PUSH2 0x12EB JUMP JUMPDEST PUSH2 0xE9D JUMP JUMPDEST PUSH2 0xAAB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1AA4 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xAB5 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0xAC5 DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xBC6 JUMPI PUSH1 0x0 DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xADF JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xAF7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH2 0xB64 DUP2 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD6 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x0 DUP7 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP14 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD PUSH2 0x12F0 SWAP1 SWAP3 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x0 DUP4 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP15 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP11 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xB9B SWAP1 DUP3 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x1 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP7 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP8 MSTORE SWAP1 SWAP2 MSTORE SWAP1 SWAP4 KECCAK256 SSTORE POP ADD PUSH2 0xAC8 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC4C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC34 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xC8B JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xC73 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0xCAE DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x13E8 JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0xCF8 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B29 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP4 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0xD12 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0xD3C JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0xD9A JUMPI PUSH2 0xD7B DUP6 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD5A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0xD6E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x880 JUMP JUMPDEST DUP3 DUP3 DUP2 MLOAD DUP2 LT PUSH2 0xD87 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x1 ADD PUSH2 0xD42 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x9B2 DUP5 DUP5 DUP5 DUP5 PUSH2 0x1667 JUMP JUMPDEST DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDC0 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0xE06 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B00 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x2 PUSH1 0x0 PUSH2 0xE13 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0xE57 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0xF10 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A7F PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xF18 PUSH2 0x12EB JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xF3E JUMPI POP PUSH2 0xF3E DUP6 PUSH2 0xA6B PUSH2 0x12EB JUMP JUMPDEST PUSH2 0xF79 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A56 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xF83 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0xFA3 DUP2 DUP8 DUP8 PUSH2 0xF94 DUP9 PUSH2 0x1768 JUMP JUMPDEST PUSH2 0xF9D DUP9 PUSH2 0x1768 JUMP JUMPDEST DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH2 0xFEA DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1AD6 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP14 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD SWAP2 SWAP1 PUSH2 0x12F0 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 DUP2 AND DUP6 MSTORE SWAP3 MSTORE DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE DUP8 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x1021 SWAP1 DUP5 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE SWAP4 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP9 DUP2 MSTORE SWAP2 DUP3 ADD DUP8 SWAP1 MSTORE DUP1 MLOAD DUP11 DUP5 AND SWAP4 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0xCAE DUP2 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x10DB JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B7A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP2 MLOAD DUP4 MLOAD EQ PUSH2 0x111B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B52 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x1125 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0x1136 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0xCAE JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP5 MLOAD DUP2 LT ISZERO PUSH2 0x11FA JUMPI PUSH2 0x11B1 PUSH1 0x1 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x1155 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SLOAD DUP6 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x119B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x1387 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 PUSH1 0x0 DUP8 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x11C1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD DUP2 ADD MLOAD DUP3 MSTORE DUP2 DUP2 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 DUP2 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP12 AND DUP3 MSTORE SWAP1 SWAP3 MSTORE SWAP1 KECCAK256 SSTORE PUSH1 0x1 ADD PUSH2 0x1139 JUMP JUMPDEST POP DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x4A39DC06D4C0DBC64B70AF90FD698A233A518AA5D07E595D983B8C0526C8F7FB DUP8 DUP8 PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP4 DUP2 SUB DUP4 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1281 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1269 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP4 DUP2 SUB DUP3 MSTORE DUP5 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x12C0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x12A8 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP5 POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH2 0x12E4 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x13E8 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST CALLER JUMPDEST SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP5 DUP5 GT ISZERO PUSH2 0x137F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1344 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x132C JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1371 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP SWAP1 SUB SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 ADD DUP4 DUP2 LT ISZERO PUSH2 0x13E1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0x13FA DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x191D JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xBC197C81 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 DUP2 SUB DUP5 MSTORE DUP8 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1488 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1470 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP4 MSTORE DUP7 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x14C7 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14AF JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD DUP5 DUP2 SUB DUP3 MSTORE DUP6 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1503 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x14EB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1530 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP9 POP POP POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1555 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x157A JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1575 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x160F JUMPI PUSH2 0x1586 PUSH2 0x1929 JUMP JUMPDEST DUP1 PUSH2 0x1591 JUMPI POP PUSH2 0x15D8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP4 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP4 MLOAD DUP5 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1344 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x132C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x34 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x19CF PUSH1 0x34 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xBC197C81 PUSH1 0xE0 SHL EQ PUSH2 0x165E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A03 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH2 0x16AC JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1B7A PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x16B6 PUSH2 0x12EB JUMP JUMPDEST SWAP1 POP PUSH2 0x16C8 DUP2 PUSH1 0x0 DUP8 PUSH2 0xF94 DUP9 PUSH2 0x1768 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP10 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x16F5 SWAP1 DUP5 PUSH2 0x1387 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP12 AND DUP1 DUP7 MSTORE SWAP2 DUP5 MSTORE DUP3 DUP6 KECCAK256 SWAP6 SWAP1 SWAP6 SSTORE DUP2 MLOAD DUP10 DUP2 MSTORE SWAP3 DUP4 ADD DUP9 SWAP1 MSTORE DUP2 MLOAD SWAP1 SWAP5 DUP7 AND SWAP3 PUSH32 0xC3D58168C5AE7397731D063D5BBF3D657854427343F4C083240F7AACAA2D0F62 SWAP3 SWAP1 DUP3 SWAP1 SUB ADD SWAP1 LOG4 PUSH2 0x12E4 DUP2 PUSH1 0x0 DUP8 DUP8 DUP8 DUP8 PUSH2 0x17AC JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 DUP1 DUP3 MSTORE DUP2 DUP4 ADD SWAP1 SWAP3 MSTORE PUSH1 0x60 SWAP2 DUP3 SWAP2 SWAP1 PUSH1 0x20 DUP1 DUP4 ADD SWAP1 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP POP SWAP1 POP DUP3 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x179B JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x17BE DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x191D JUMP JUMPDEST ISZERO PUSH2 0xCAE JUMPI DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH4 0xF23A6E61 DUP8 DUP8 DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD DUP7 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x184D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1835 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x187A JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x189D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL SWAP3 POP POP POP DUP1 ISZERO PUSH2 0x18C2 JUMPI POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x18BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 JUMPDEST PUSH2 0x18CE JUMPI PUSH2 0x1586 PUSH2 0x1929 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH4 0xF23A6E61 PUSH1 0xE0 SHL EQ PUSH2 0x165E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x28 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1A03 PUSH1 0x28 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0xE0 SHR SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x44 RETURNDATASIZE LT ISZERO PUSH2 0x1939 JUMPI PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x4 DUP2 DUP3 RETURNDATACOPY PUSH4 0x8C379A0 PUSH2 0x194D DUP3 MLOAD PUSH2 0x1923 JUMP JUMPDEST EQ PUSH2 0x1957 JUMPI PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x3 NOT ADD PUSH1 0x4 DUP3 RETURNDATACOPY DUP1 MLOAD RETURNDATASIZE PUSH8 0xFFFFFFFFFFFFFFFF DUP2 PUSH1 0x24 DUP5 ADD GT DUP2 DUP5 GT OR ISZERO PUSH2 0x1987 JUMPI POP POP POP POP PUSH2 0x12ED JUMP JUMPDEST DUP3 DUP5 ADD SWAP3 POP DUP3 MLOAD SWAP2 POP DUP1 DUP3 GT ISZERO PUSH2 0x19A1 JUMPI POP POP POP POP PUSH2 0x12ED JUMP JUMPDEST POP RETURNDATASIZE DUP4 ADD PUSH1 0x20 DUP3 DUP5 ADD ADD GT ISZERO PUSH2 0x19B9 JUMPI POP POP POP PUSH2 0x12ED JUMP JUMPDEST PUSH1 0x1F ADD PUSH1 0x1F NOT AND DUP2 ADD PUSH1 0x20 ADD PUSH1 0x40 MSTORE SWAP2 POP POP SWAP1 JUMP INVALID GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F206E6F6E20455243313135 CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD MSTORE PUSH6 0x636569766572 KECCAK256 PUSH19 0x656A656374656420746F6B656E734552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x657373455243313135353A2063616C6C657220 PUSH10 0x73206E6F74206F776E65 PUSH19 0x206E6F7220617070726F766564455243313135 CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0x4552433131 CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH10 0x6E73756666696369656E PUSH21 0x2062616C616E636520666F72207472616E73666572 GASLIMIT MSTORE NUMBER BALANCE BALANCE CALLDATALOAD CALLDATALOAD GASPRICE KECCAK256 PUSH20 0x657474696E6720617070726F76616C2073746174 PUSH22 0x7320666F722073656C66455243313135353A20616363 PUSH16 0x756E747320616E6420696473206C656E PUSH8 0x7468206D69736D61 PUSH21 0x6368455243313135353A2069647320616E6420616D PUSH16 0x756E7473206C656E677468206D69736D PUSH2 0x7463 PUSH9 0x455243313135353A20 PUSH14 0x696E7420746F20746865207A6572 PUSH16 0x2061646472657373A264697066735822 SLT KECCAK256 DELEGATECALL 0xB4 MSTORE8 0xB2 0xC3 XOR PUSH27 0x713B45299AD9F641DDD1CB606EC1C4A9781DC891C1E7BB6A766473 PUSH16 0x6C634300060C00330000000000000000 ", + "sourceMap": "127:390:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2976:228:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2976:228:4;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;2729:105:4;;;;;;;;;;;;;;;;-1:-1:-1;2729:105:4;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;357:158:24;;;;;;;;;;;;;;;;-1:-1:-1;;;;;357:158:24;;;;;;;;;;;;;;;-1:-1:-1;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;357:158:24;;;;;;;;-1:-1:-1;357:158:24;;-1:-1:-1;;;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;357:158:24;;;;;;;;-1:-1:-1;357:158:24;;-1:-1:-1;;;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;357:158:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;357:158:24;;-1:-1:-1;357:158:24;;-1:-1:-1;;;;;357:158:24:i;:::-;;5534:1184:4;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5534:1184:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5534:1184:4;;-1:-1:-1;5534:1184:4;;-1:-1:-1;;;;;5534:1184:4:i;3361:530::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3361:530:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3361:530:4;;-1:-1:-1;3361:530:4;;-1:-1:-1;;;;;3361:530:4:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;215:136:24;;;;;;;;;;;;;;;;-1:-1:-1;;;;;215:136:24;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;215:136:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;215:136:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;215:136:24;;-1:-1:-1;215:136:24;;-1:-1:-1;;;;;215:136:24:i;3959:306:4:-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;3959:306:4;;;;;;;;;;:::i;4332:166::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4332:166:4;;;;;;;;;;:::i;4565:897::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4565:897:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4565:897:4;;-1:-1:-1;4565:897:4;;-1:-1:-1;;;;;4565:897:4:i;2976:228::-;3062:7;-1:-1:-1;;;;;3089:21:4;;3081:77;;;;-1:-1:-1;;;3081:77:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3175:13:4;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;3175:22:4;;;;;;;;;;;;2976:228::o;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;1050:4;1073:33;;;;;;;;;;;;;;965:148::o;2729:105:4:-;2823:4;2816:11;;;;;;;;-1:-1:-1;;2816:11:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2791:13;;2816:11;;2823:4;;2816:11;;2823:4;2816:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2729:105;;;:::o;357:158:24:-;474:34;485:2;489:3;494:7;503:4;474:10;:34::i;:::-;357:158;;;;:::o;5534:1184:4:-;5788:7;:14;5774:3;:10;:28;5766:81;;;;-1:-1:-1;;;5766:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5865:16:4;;5857:66;;;;-1:-1:-1;;;5857:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5962:12;:10;:12::i;:::-;-1:-1:-1;;;;;5954:20:4;:4;-1:-1:-1;;;;;5954:20:4;;:60;;;;5978:36;5995:4;6001:12;:10;:12::i;:::-;5978:16;:36::i;:::-;5933:157;;;;-1:-1:-1;;;5933:157:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6101:16;6120:12;:10;:12::i;:::-;6101:31;;6143:60;6164:8;6174:4;6180:2;6184:3;6189:7;6198:4;6143:20;:60::i;:::-;6219:9;6214:349;6238:3;:10;6234:1;:14;6214:349;;;6269:10;6282:3;6286:1;6282:6;;;;;;;;;;;;;;6269:19;;6302:14;6319:7;6327:1;6319:10;;;;;;;;;;;;;;6302:27;;6366:123;6407:6;6366:123;;;;;;;;;;;;;;;;;:9;:13;6376:2;6366:13;;;;;;;;;;;:19;6380:4;-1:-1:-1;;;;;6366:19:4;-1:-1:-1;;;;;6366:19:4;;;;;;;;;;;;;:23;;:123;;;;;:::i;:::-;6344:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6344:19:4;;;;;;;;;;:145;;;;6523:17;;;;;;:29;;6545:6;6523:21;:29::i;:::-;6503:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;6503:17:4;;;;;;;;;;:49;-1:-1:-1;6250:3:4;6214:349;;;;6608:2;-1:-1:-1;;;;;6578:47:4;6602:4;-1:-1:-1;;;;;6578:47:4;6592:8;-1:-1:-1;;;;;6578:47:4;;6612:3;6617:7;6578:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6636:75;6672:8;6682:4;6688:2;6692:3;6697:7;6706:4;6636:35;:75::i;:::-;5534:1184;;;;;;:::o;3361:530::-;3534:16;3593:3;:10;3574:8;:15;:29;3566:83;;;;-1:-1:-1;;;3566:83:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3660:30;3707:8;:15;3693:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3693:30:4;;3660:63;;3739:9;3734:120;3758:8;:15;3754:1;:19;3734:120;;;3813:30;3823:8;3832:1;3823:11;;;;;;;;;;;;;;3836:3;3840:1;3836:6;;;;;;;;;;;;;;3813:9;:30::i;:::-;3794:13;3808:1;3794:16;;;;;;;;;;;;;;;;;:49;3775:3;;3734:120;;;-1:-1:-1;3871:13:4;3361:530;-1:-1:-1;;;3361:530:4:o;215:136:24:-;312:32;318:7;327:2;331:6;339:4;312:5;:32::i;3959:306:4:-;4077:8;-1:-1:-1;;;;;4061:24:4;:12;:10;:12::i;:::-;-1:-1:-1;;;;;4061:24:4;;;4053:78;;;;-1:-1:-1;;;4053:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4187:8;4142:18;:32;4161:12;:10;:12::i;:::-;-1:-1:-1;;;;;4142:32:4;;;;;;;;;;;;;;;;;-1:-1:-1;4142:32:4;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;4142:53:4;;;;;;;;;;;4225:12;:10;:12::i;:::-;-1:-1:-1;;;;;4210:48:4;;4249:8;4210:48;;;;;;;;;;;;;;;;;;;;3959:306;;:::o;4332:166::-;-1:-1:-1;;;;;4454:27:4;;;4431:4;4454:27;;;:18;:27;;;;;;;;:37;;;;;;;;;;;;;;;4332:166::o;4565:897::-;-1:-1:-1;;;;;4780:16:4;;4772:66;;;;-1:-1:-1;;;4772:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4877:12;:10;:12::i;:::-;-1:-1:-1;;;;;4869:20:4;:4;-1:-1:-1;;;;;4869:20:4;;:60;;;;4893:36;4910:4;4916:12;:10;:12::i;4893:36::-;4848:148;;;;-1:-1:-1;;;4848:148:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5007:16;5026:12;:10;:12::i;:::-;5007:31;;5049:96;5070:8;5080:4;5086:2;5090:21;5108:2;5090:17;:21::i;:::-;5113:25;5131:6;5113:17;:25::i;:::-;5140:4;5049:20;:96::i;:::-;5178:77;5202:6;5178:77;;;;;;;;;;;;;;;;;:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5178:19:4;;;;;;;;;;;:77;:23;:77::i;:::-;5156:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5156:19:4;;;;;;;;;;:99;;;;5285:17;;;;;;:29;;5307:6;5285:21;:29::i;:::-;5265:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;5265:17:4;;;;;;;;;;;;;:49;;;;5330:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5387:68;5418:8;5428:4;5434:2;5438;5442:6;5450:4;5387:30;:68::i;8932:700::-;-1:-1:-1;;;;;9066:16:4;;9058:62;;;;-1:-1:-1;;;9058:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9152:7;:14;9138:3;:10;:28;9130:81;;;;-1:-1:-1;;;9130:81:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:16;9241:12;:10;:12::i;:::-;9222:31;;9264:66;9285:8;9303:1;9307:2;9311:3;9316:7;9325:4;9264:20;:66::i;:::-;9346:6;9341:124;9362:3;:10;9358:1;:14;9341:124;;;9417:37;9432:9;:17;9442:3;9446:1;9442:6;;;;;;;;;;;;;;9432:17;;;;;;;;;;;:21;9450:2;-1:-1:-1;;;;;9432:21:4;-1:-1:-1;;;;;9432:21:4;;;;;;;;;;;;;9417:7;9425:1;9417:10;;;;;;;;;;;;;;:14;;:37;;;;:::i;:::-;9393:9;:17;9403:3;9407:1;9403:6;;;;;;;;;;;;;;;;;;;9393:17;;;;;;;;;;;;;-1:-1:-1;9393:17:4;;;-1:-1:-1;;;;;9393:21:4;;;;;;;;;:61;9374:3;;9341:124;;;;9516:2;-1:-1:-1;;;;;9480:53:4;9512:1;-1:-1:-1;;;;;9480:53:4;9494:8;-1:-1:-1;;;;;9480:53:4;;9520:3;9525:7;9480:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9544:81;9580:8;9598:1;9602:2;9606:3;9611:7;9620:4;9544:35;:81::i;:::-;8932:700;;;;;:::o;598:104:16:-;685:10;598:104;;:::o;5432:163:3:-;5518:7;5553:12;5545:6;;;;5537:29;;;;-1:-1:-1;;;5537:29:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5583:5:3;;;5432:163::o;2690:175::-;2748:7;2779:5;;;2802:6;;;;2794:46;;;;;-1:-1:-1;;;2794:46:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;2857:1;2690:175;-1:-1:-1;;;2690:175:3:o;13240:778:4:-;13484:15;:2;-1:-1:-1;;;;;13484:13:4;;:15::i;:::-;13480:532;;;13536:2;-1:-1:-1;;;;;13519:43:4;;13563:8;13573:4;13579:3;13584:7;13593:4;13519:79;;;;;;;;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;-1:-1:-1;;;;;13519:79:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13519:79:4;;;13515:487;;;;:::i;:::-;;;;;;;;13871:14;;-1:-1:-1;;;13871:14:4;;;;;;;;;;;;;;;;;13878:6;;13871:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;13925:62;;-1:-1:-1;;;13925:62:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13515:487;-1:-1:-1;;;;;;13647:64:4;;-1:-1:-1;;;13647:64:4;13643:161;;13735:50;;-1:-1:-1;;;13735:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13643:161;13599:219;13240:778;;;;;;:::o;8015:572::-;-1:-1:-1;;;;;8129:21:4;;8121:67;;;;-1:-1:-1;;;8121:67:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8199:16;8218:12;:10;:12::i;:::-;8199:31;;8241:107;8262:8;8280:1;8284:7;8293:21;8311:2;8293:17;:21::i;8241:107::-;8384:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8384:22:4;;;;;;;;;;:34;;8411:6;8384:26;:34::i;:::-;8359:13;;;;:9;:13;;;;;;;;-1:-1:-1;;;;;8359:22:4;;;;;;;;;;;;:59;;;;8433:57;;;;;;;;;;;;;8359:22;;8433:57;;;;;;;;;;;;8501:79;8532:8;8550:1;8554:7;8563:2;8567:6;8575:4;8501:30;:79::i;14024:193::-;14143:16;;;14157:1;14143:16;;;;;;;;;14090;;;;14143;;;;;;;;;;;;-1:-1:-1;14143:16:4;14118:41;;14180:7;14169:5;14175:1;14169:8;;;;;;;;;;;;;;;;;:18;14205:5;14024:193;-1:-1:-1;;14024:193:4:o;12493:741::-;12712:15;:2;-1:-1:-1;;;;;12712:13:4;;:15::i;:::-;12708:520;;;12764:2;-1:-1:-1;;;;;12747:38:4;;12786:8;12796:4;12802:2;12806:6;12814:4;12747:72;;;;;;;;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;-1:-1:-1;;;;;12747:72:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12747:72:4;;;12743:475;;;;:::i;:::-;-1:-1:-1;;;;;;12868:59:4;;-1:-1:-1;;;12868:59:4;12864:156;;12951:50;;-1:-1:-1;;;12951:50:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;726:413:15;1086:20;1124:8;;;726:413::o;110:106:-1:-;195:3;191:15;;163:53::o;224:739::-;;297:4;279:16;276:26;273:2;;;305:5;;273:2;339:1;-1:-1;;318:23;414:10;357:34;-1:-1;382:8;357:34;:::i;:::-;406:19;396:2;;429:5;;396:2;460;454:9;496:16;-1:-1;;492:24;339:1;454:9;468:49;543:4;537:11;624:16;576:18;624:16;617:4;609:6;605:17;602:39;576:18;568:6;565:30;556:91;553:2;;;655:5;;;;;;553:2;693:6;687:4;683:17;672:28;;725:3;719:10;705:24;;576:18;740:6;737:30;734:2;;;770:5;;;;;;734:2;;847:16;841:4;837:27;807:4;814:6;802:3;794:27;;829:36;826:2;;;868:5;;;;;826:2;89:7;73:14;-1:-1;;69:28;892:50;;807:4;892:50;460:2;881:62;900:3;-1:-1;;267:696;:::o" + }, + "methodIdentifiers": { + "balanceOf(address,uint256)": "00fdd58e", + "balanceOfBatch(address[],uint256[])": "4e1273f4", + "isApprovedForAll(address,address)": "e985e9c5", + "mint(address,uint256,uint256,bytes)": "731133e9", + "mintBatch(address,uint256[],uint256[],bytes)": "1f7fdffa", + "safeBatchTransferFrom(address,address,uint256[],uint256[],bytes)": "2eb2c2d6", + "safeTransferFrom(address,address,uint256,uint256,bytes)": "f242432a", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "uri(uint256)": "0e89341c" + } + } + } + }, + "contracts/test/TestNFT721.sol": { + "TestNFT721": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60806040523480156200001157600080fd5b50604080518082018252600a815269546573744e465437323160b01b602080830191909152825180840190935260068352654e465437323160d01b9083015290620000636301ffc9a760e01b620000cd565b81516200007890600690602085019062000152565b5080516200008e90600790602084019062000152565b50620000a16380ac58cd60e01b620000cd565b620000b3635b5e139f60e01b620000cd565b620000c563780e9d6360e01b620000cd565b5050620001ee565b6001600160e01b031980821614156200012d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019557805160ff1916838001178555620001c5565b82800160010185558215620001c5579182015b82811115620001c5578251825591602001919060010190620001a8565b50620001d3929150620001d7565b5090565b5b80821115620001d35760008155600101620001d8565b61199380620001fe6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220eff40ea84425c10107b69bfd956c2b81ab26716f08d5aa488d2e4c164dd7b30764736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0xA DUP2 MSTORE PUSH10 0x546573744E4654373231 PUSH1 0xB0 SHL PUSH1 0x20 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP5 ADD SWAP1 SWAP4 MSTORE PUSH1 0x6 DUP4 MSTORE PUSH6 0x4E4654373231 PUSH1 0xD0 SHL SWAP1 DUP4 ADD MSTORE SWAP1 PUSH3 0x63 PUSH4 0x1FFC9A7 PUSH1 0xE0 SHL PUSH3 0xCD JUMP JUMPDEST DUP2 MLOAD PUSH3 0x78 SWAP1 PUSH1 0x6 SWAP1 PUSH1 0x20 DUP6 ADD SWAP1 PUSH3 0x152 JUMP JUMPDEST POP DUP1 MLOAD PUSH3 0x8E SWAP1 PUSH1 0x7 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x152 JUMP JUMPDEST POP PUSH3 0xA1 PUSH4 0x80AC58CD PUSH1 0xE0 SHL PUSH3 0xCD JUMP JUMPDEST PUSH3 0xB3 PUSH4 0x5B5E139F PUSH1 0xE0 SHL PUSH3 0xCD JUMP JUMPDEST PUSH3 0xC5 PUSH4 0x780E9D63 PUSH1 0xE0 SHL PUSH3 0xCD JUMP JUMPDEST POP POP PUSH3 0x1EE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP1 DUP3 AND EQ ISZERO PUSH3 0x12D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1C PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433136353A20696E76616C696420696E7465726661636520696400000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x1 OR SWAP1 SSTORE JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x195 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x1C5 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x1C5 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x1C5 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1A8 JUMP JUMPDEST POP PUSH3 0x1D3 SWAP3 SWAP2 POP PUSH3 0x1D7 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x1D3 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x1D8 JUMP JUMPDEST PUSH2 0x1993 DUP1 PUSH3 0x1FE PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x462 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x323 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x201 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x175 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH2 0x686 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x719 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x734 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74A JUMP JUMPDEST PUSH2 0x153 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x153 PUSH2 0x83B JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x89C JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x522 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1888 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP3 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x61B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x63C JUMPI POP PUSH2 0x63C DUP2 PUSH2 0x637 PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 PUSH2 0xCC1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x692 PUSH1 0x2 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x6A2 PUSH2 0xCBD JUMP JUMPDEST DUP3 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH2 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x710 SWAP1 DUP4 PUSH2 0xF2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x742 PUSH1 0x2 DUP5 PUSH2 0xF36 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1813 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x713 SWAP1 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x917 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x95B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9AC PUSH2 0xCBD JUMP JUMPDEST DUP4 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9F9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA0A DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xADA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xADA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xABD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x60 PUSH2 0xAEB PUSH2 0x772 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAFF JUMPI POP SWAP1 POP PUSH2 0x4AE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBC0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB3A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB1B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB82 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x4AE JUMP JUMPDEST DUP1 PUSH2 0xBCA DUP6 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBFC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBDD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 PUSH1 0x2 DUP4 PUSH2 0x1096 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCF6 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD45 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AF PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDC6 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDBB DUP5 PUSH2 0x549 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP PUSH2 0xDD6 DUP2 DUP6 PUSH2 0xC82 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDF1 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP4 DUP4 DUP4 PUSH2 0x681 JUMP JUMPDEST PUSH2 0xE91 PUSH1 0x0 DUP3 PUSH2 0xCC1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEB3 SWAP1 DUP3 PUSH2 0x10A6 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED6 SWAP1 DUP3 PUSH2 0x10B2 JUMP JUMPDEST POP PUSH2 0xEE3 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10BE JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF45 DUP7 DUP7 PUSH2 0x1138 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF74 DUP5 DUP5 DUP5 PUSH2 0xDDE JUMP JUMPDEST PUSH2 0xF80 DUP5 DUP5 DUP5 DUP5 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFE0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4AE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFE4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x108D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x106B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1048 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x14C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x150D JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1116 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1737 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x117C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1866 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x118D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x124E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1240 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1261 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1291 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x129D JUMPI POP PUSH1 0x1 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AB PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12B2 PUSH2 0xCBD JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1319 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1301 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1346 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x15AA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x14B9 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1430 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x144D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x147D JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x1505 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x713 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1572 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF62 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1585 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF62 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x15BE DUP6 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x160F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x164E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x16C5 DUP3 DUP3 DUP7 PUSH2 0x16D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16DF JUMPI POP DUP2 PUSH2 0xF62 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220EFF40EA84425C10107B69BFD956C2B81 0xAB 0x26 PUSH18 0x6F08D5AA488D2E4C164DD7B30764736F6C63 NUMBER STOP MOD 0xC STOP CALLER ", + "sourceMap": "125:62:25:-:0;;;;;;;;;;;;-1:-1:-1;3577:369:10;;;;;;;;;;;-1:-1:-1;;;3577:369:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3577:369:10;;;;;768:40:1;-1:-1:-1;;;768:18:1;:40::i;:::-;3651:13:10;;;;:5;;:13;;;;;:::i;:::-;-1:-1:-1;3674:17:10;;;;:7;;:17;;;;;:::i;:::-;-1:-1:-1;3779:40:10;-1:-1:-1;;;3779:18:10;:40::i;:::-;3829:49;-1:-1:-1;;;3829:18:10;:49::i;:::-;3888:51;-1:-1:-1;;;3888:18:10;:51::i;:::-;3577:369;;125:62:25;;1507:198:1;-1:-1:-1;;;;;;1590:25:1;;;;;1582:66;;;;;-1:-1:-1;;;1582:66:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1658:33:1;:20;:33;;;;;;;;;;:40;;-1:-1:-1;;1658:40:1;1694:4;1658:40;;;1507:198::o;125:62:25:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;125:62:25;;;-1:-1:-1;125:62:25;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220eff40ea84425c10107b69bfd956c2b81ab26716f08d5aa488d2e4c164dd7b30764736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x10B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x4F6CCCE7 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x71 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0xA22CB465 EQ PUSH2 0x351 JUMPI DUP1 PUSH4 0xB88D4FDE EQ PUSH2 0x37F JUMPI DUP1 PUSH4 0xC87B56DD EQ PUSH2 0x445 JUMPI DUP1 PUSH4 0xE985E9C5 EQ PUSH2 0x462 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x4F6CCCE7 EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x6352211E EQ PUSH2 0x2FE JUMPI DUP1 PUSH4 0x6C0360EB EQ PUSH2 0x31B JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x323 JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x22F JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x249 JUMPI DUP1 PUSH4 0x2F745C59 EQ PUSH2 0x27F JUMPI DUP1 PUSH4 0x42842E0E EQ PUSH2 0x2AB JUMPI PUSH2 0x10B JUMP JUMPDEST DUP1 PUSH4 0x1FFC9A7 EQ PUSH2 0x110 JUMPI DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x14B JUMPI DUP1 PUSH4 0x81812FC EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x201 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x126 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH2 0x490 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x153 PUSH2 0x4B3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x18D JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x175 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1BA JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x549 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x217 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5AB JUMP JUMPDEST STOP JUMPDEST PUSH2 0x237 PUSH2 0x686 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x697 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x6EE JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x2C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x719 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2F7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x734 JUMP JUMPDEST PUSH2 0x1E5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x314 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x74A JUMP JUMPDEST PUSH2 0x153 PUSH2 0x772 JUMP JUMPDEST PUSH2 0x237 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x7D3 JUMP JUMPDEST PUSH2 0x153 PUSH2 0x83B JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD ISZERO ISZERO PUSH2 0x89C JUMP JUMPDEST PUSH2 0x22D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x395 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 CALLDATALOAD DUP2 AND SWAP3 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x404 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP1 DUP1 DUP1 PUSH1 0x1F ADD PUSH1 0x20 DUP1 SWAP2 DIV MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP SWAP3 SWAP6 POP PUSH2 0x9A1 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH2 0x153 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x45B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x9FF JUMP JUMPDEST PUSH2 0x137 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x478 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0xC82 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT DUP2 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x20 DUP2 SWAP1 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0xFF AND JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x522 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x554 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0x58F JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1888 PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x5B6 DUP3 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x609 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x190C PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x61B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0x63C JUMPI POP PUSH2 0x63C DUP2 PUSH2 0x637 PUSH2 0xCBD JUMP JUMPDEST PUSH2 0xC82 JUMP JUMPDEST PUSH2 0x677 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x38 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17DB PUSH1 0x38 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 PUSH2 0xCC1 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x692 PUSH1 0x2 PUSH2 0xD2F JUMP JUMPDEST SWAP1 POP SWAP1 JUMP JUMPDEST PUSH2 0x6A8 PUSH2 0x6A2 PUSH2 0xCBD JUMP JUMPDEST DUP3 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x6E3 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH2 0xDDE JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 PUSH2 0x710 SWAP1 DUP4 PUSH2 0xF2A JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0x681 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x0 DUP2 MSTORE POP PUSH2 0x9A1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0x742 PUSH1 0x2 DUP5 PUSH2 0xF36 JUMP JUMPDEST POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x183D PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x2 SWAP2 SWAP1 PUSH2 0xF52 JUMP JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH1 0x0 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0x81A JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1813 PUSH1 0x2A SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0x713 SWAP1 PUSH2 0xD2F JUMP JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP9 AND ISZERO MUL ADD SWAP1 SWAP6 AND SWAP5 SWAP1 SWAP5 DIV SWAP4 DUP5 ADD DUP2 SWAP1 DIV DUP2 MUL DUP3 ADD DUP2 ADD SWAP1 SWAP3 MSTORE DUP3 DUP2 MSTORE PUSH1 0x60 SWAP4 SWAP1 SWAP3 SWAP1 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x53F JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x514 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x53F JUMP JUMPDEST PUSH2 0x8A4 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ ISZERO PUSH2 0x90A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4552433732313A20617070726F766520746F2063616C6C657200000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x917 PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 DUP2 AND DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP2 DUP3 ADD PUSH1 0x0 SWAP1 DUP2 KECCAK256 SWAP2 DUP8 AND DUP1 DUP3 MSTORE SWAP2 SWAP1 SWAP4 MSTORE SWAP2 KECCAK256 DUP1 SLOAD PUSH1 0xFF NOT AND SWAP3 ISZERO ISZERO SWAP3 SWAP1 SWAP3 OR SWAP1 SWAP2 SSTORE PUSH2 0x95B PUSH2 0xCBD JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x17307EAB39AB6107E8899845AD3D59BD9653F200F220920489CA2B5937696C31 DUP4 PUSH1 0x40 MLOAD DUP1 DUP3 ISZERO ISZERO DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH2 0x9B2 PUSH2 0x9AC PUSH2 0xCBD JUMP JUMPDEST DUP4 PUSH2 0xD3A JUMP JUMPDEST PUSH2 0x9ED JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x31 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x192D PUSH1 0x31 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x9F9 DUP5 DUP5 DUP5 DUP5 PUSH2 0xF69 JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0xA0A DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xA45 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2F DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18DD PUSH1 0x2F SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x8 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD DUP4 MLOAD PUSH1 0x1F PUSH1 0x2 PUSH1 0x0 NOT PUSH2 0x100 PUSH1 0x1 DUP7 AND ISZERO MUL ADD SWAP1 SWAP4 AND SWAP3 SWAP1 SWAP3 DIV SWAP2 DUP3 ADD DUP5 SWAP1 DIV DUP5 MUL DUP2 ADD DUP5 ADD SWAP1 SWAP5 MSTORE DUP1 DUP5 MSTORE PUSH1 0x60 SWAP4 SWAP3 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0xADA JUMPI DUP1 PUSH1 0x1F LT PUSH2 0xAAF JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0xADA JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0xABD JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP SWAP1 POP PUSH1 0x60 PUSH2 0xAEB PUSH2 0x772 JUMP JUMPDEST SWAP1 POP DUP1 MLOAD PUSH1 0x0 EQ ISZERO PUSH2 0xAFF JUMPI POP SWAP1 POP PUSH2 0x4AE JUMP JUMPDEST DUP2 MLOAD ISZERO PUSH2 0xBC0 JUMPI DUP1 DUP3 PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB3A JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB1B JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xB82 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xB63 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP PUSH2 0x4AE JUMP JUMPDEST DUP1 PUSH2 0xBCA DUP6 PUSH2 0xFBB JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 ADD DUP1 DUP4 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xBFC JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xBDD JUMP JUMPDEST MLOAD DUP2 MLOAD PUSH1 0x20 SWAP4 DUP5 SUB PUSH2 0x100 EXP PUSH1 0x0 NOT ADD DUP1 NOT SWAP1 SWAP3 AND SWAP2 AND OR SWAP1 MSTORE DUP6 MLOAD SWAP2 SWAP1 SWAP4 ADD SWAP3 DUP6 ADD SWAP2 POP DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xC44 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC25 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP2 DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x5 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP4 SWAP1 SWAP5 AND DUP3 MSTORE SWAP2 SWAP1 SWAP2 MSTORE KECCAK256 SLOAD PUSH1 0xFF AND SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 PUSH1 0x2 DUP4 PUSH2 0x1096 JUMP JUMPDEST CALLER SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND SWAP1 DUP2 OR SWAP1 SWAP2 SSTORE DUP2 SWAP1 PUSH2 0xCF6 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x713 DUP3 PUSH2 0x10A2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xD45 DUP3 PUSH2 0xCB0 JUMP JUMPDEST PUSH2 0xD80 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x2C DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x17AF PUSH1 0x2C SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xD8B DUP4 PUSH2 0x74A JUMP JUMPDEST SWAP1 POP DUP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ DUP1 PUSH2 0xDC6 JUMPI POP DUP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDBB DUP5 PUSH2 0x549 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST DUP1 PUSH2 0xDD6 JUMPI POP PUSH2 0xDD6 DUP2 DUP6 PUSH2 0xC82 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0xDF1 DUP3 PUSH2 0x74A JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ PUSH2 0xE36 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x29 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x18B4 PUSH1 0x29 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH2 0xE7B JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x24 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x178B PUSH1 0x24 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0xE86 DUP4 DUP4 DUP4 PUSH2 0x681 JUMP JUMPDEST PUSH2 0xE91 PUSH1 0x0 DUP3 PUSH2 0xCC1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xEB3 SWAP1 DUP3 PUSH2 0x10A6 JUMP JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 PUSH2 0xED6 SWAP1 DUP3 PUSH2 0x10B2 JUMP JUMPDEST POP PUSH2 0xEE3 PUSH1 0x2 DUP3 DUP5 PUSH2 0x10BE JUMP JUMPDEST POP DUP1 DUP3 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF PUSH1 0x40 MLOAD PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x10D4 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0xF45 DUP7 DUP7 PUSH2 0x1138 JUMP JUMPDEST SWAP1 SWAP8 SWAP1 SWAP7 POP SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 DUP5 PUSH2 0x11B3 JUMP JUMPDEST SWAP1 POP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH2 0xF74 DUP5 DUP5 DUP5 PUSH2 0xDDE JUMP JUMPDEST PUSH2 0xF80 DUP5 DUP5 DUP5 DUP5 PUSH2 0x127D JUMP JUMPDEST PUSH2 0x9F9 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x60 DUP2 PUSH2 0xFE0 JUMPI POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x3 PUSH1 0xFC SHL PUSH1 0x20 DUP3 ADD MSTORE PUSH2 0x4AE JUMP JUMPDEST DUP2 PUSH1 0x0 JUMPDEST DUP2 ISZERO PUSH2 0xFF8 JUMPI PUSH1 0x1 ADD PUSH1 0xA DUP3 DIV SWAP2 POP PUSH2 0xFE4 JUMP JUMPDEST PUSH1 0x60 DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x1011 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x1F ADD PUSH1 0x1F NOT AND PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x103C JUMPI PUSH1 0x20 DUP3 ADD DUP2 DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP DUP6 SWAP4 POP SWAP1 POP PUSH1 0x0 NOT DUP3 ADD JUMPDEST DUP4 ISZERO PUSH2 0x108D JUMPI PUSH1 0xA DUP5 MOD PUSH1 0x30 ADD PUSH1 0xF8 SHL DUP3 DUP3 DUP1 PUSH1 0x1 SWAP1 SUB SWAP4 POP DUP2 MLOAD DUP2 LT PUSH2 0x106B JUMPI INVALID JUMPDEST PUSH1 0x20 ADD ADD SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xF8 SHL SUB NOT AND SWAP1 DUP2 PUSH1 0x0 BYTE SWAP1 MSTORE8 POP PUSH1 0xA DUP5 DIV SWAP4 POP PUSH2 0x1048 JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x13FD JUMP JUMPDEST PUSH1 0x0 PUSH2 0x710 DUP4 DUP4 PUSH2 0x14C3 JUMP JUMPDEST PUSH1 0x0 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH2 0x150D JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP3 LT PUSH2 0x1116 JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1737 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP3 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1125 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP2 SLOAD PUSH1 0x0 SWAP1 DUP2 SWAP1 DUP4 LT PUSH2 0x117C JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x1866 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP5 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x118D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD SWAP1 POP DUP1 PUSH1 0x0 ADD SLOAD DUP2 PUSH1 0x1 ADD SLOAD SWAP3 POP SWAP3 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 DUP2 PUSH2 0x124E JUMPI PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1240 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST POP DUP5 PUSH1 0x0 ADD PUSH1 0x1 DUP3 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1261 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP2 POP POP SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1291 DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x129D JUMPI POP PUSH1 0x1 PUSH2 0xDD6 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x13AB PUSH4 0xA85BD01 PUSH1 0xE1 SHL PUSH2 0x12B2 PUSH2 0xCBD JUMP JUMPDEST DUP9 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP6 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x1319 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x1301 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x1346 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 DUP2 MSTORE PUSH1 0x20 ADD PUSH2 0x1759 PUSH1 0x32 SWAP2 CODECOPY PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP2 SWAP1 PUSH2 0x15AA JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x13C4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH4 0xA85BD01 PUSH1 0xE1 SHL EQ SWAP3 POP POP POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 SWAP2 SWAP1 SWAP2 ADD PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 DUP4 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 ISZERO PUSH2 0x14B9 JUMPI DUP4 SLOAD PUSH1 0x0 NOT DUP1 DUP4 ADD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x0 SWAP1 DUP8 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x1430 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD SWAP1 POP DUP1 DUP8 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0x144D JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 DUP1 DUP4 KECCAK256 SWAP1 SWAP2 ADD SWAP3 SWAP1 SWAP3 SSTORE DUP3 DUP2 MSTORE PUSH1 0x1 DUP10 DUP2 ADD SWAP1 SWAP3 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP1 DUP5 ADD SWAP1 SSTORE DUP7 SLOAD DUP8 SWAP1 DUP1 PUSH2 0x147D JUMPI INVALID JUMPDEST PUSH1 0x1 SWAP1 SUB DUP2 DUP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP1 SSTORE SWAP1 SSTORE DUP7 PUSH1 0x1 ADD PUSH1 0x0 DUP8 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 SWAP1 SSTORE PUSH1 0x1 SWAP5 POP POP POP POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 SWAP2 POP POP PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x14CF DUP4 DUP4 PUSH2 0x13E5 JUMP JUMPDEST PUSH2 0x1505 JUMPI POP DUP2 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP5 SSTORE PUSH1 0x0 DUP5 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 KECCAK256 SWAP1 SWAP4 ADD DUP5 SWAP1 SSTORE DUP5 SLOAD DUP5 DUP3 MSTORE DUP3 DUP7 ADD SWAP1 SWAP4 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE PUSH2 0x713 JUMP JUMPDEST POP PUSH1 0x0 PUSH2 0x713 JUMP JUMPDEST PUSH1 0x0 DUP3 DUP2 MSTORE PUSH1 0x1 DUP5 ADD PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP1 PUSH2 0x1572 JUMPI POP POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE DUP4 DUP2 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP5 DUP2 MSTORE DUP7 SLOAD PUSH1 0x1 DUP2 DUP2 ADD DUP10 SSTORE PUSH1 0x0 DUP10 DUP2 MSTORE DUP5 DUP2 KECCAK256 SWAP6 MLOAD PUSH1 0x2 SWAP1 SWAP4 MUL SWAP1 SWAP6 ADD SWAP2 DUP3 SSTORE SWAP2 MLOAD SWAP1 DUP3 ADD SSTORE DUP7 SLOAD DUP7 DUP5 MSTORE DUP2 DUP9 ADD SWAP1 SWAP3 MSTORE SWAP3 SWAP1 SWAP2 KECCAK256 SSTORE PUSH2 0xF62 JUMP JUMPDEST DUP3 DUP6 PUSH1 0x0 ADD PUSH1 0x1 DUP4 SUB DUP2 SLOAD DUP2 LT PUSH2 0x1585 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH1 0x0 SWAP2 POP POP PUSH2 0xF62 JUMP JUMPDEST EXTCODESIZE ISZERO ISZERO SWAP1 JUMP JUMPDEST PUSH1 0x60 PUSH2 0xF5F DUP5 DUP5 PUSH1 0x0 DUP6 DUP6 PUSH2 0x15BE DUP6 PUSH2 0x15A4 JUMP JUMPDEST PUSH2 0x160F JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1D PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x416464726573733A2063616C6C20746F206E6F6E2D636F6E7472616374000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP7 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP6 DUP8 PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x164E JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x162F JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x16B0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x16B5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP PUSH2 0x16C5 DUP3 DUP3 DUP7 PUSH2 0x16D0 JUMP JUMPDEST SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP4 ISZERO PUSH2 0x16DF JUMPI POP DUP2 PUSH2 0xF62 JUMP JUMPDEST DUP3 MLOAD ISZERO PUSH2 0x16EF JUMPI DUP3 MLOAD DUP1 DUP5 PUSH1 0x20 ADD REVERT JUMPDEST PUSH1 0x40 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD DUP2 DUP2 MSTORE DUP5 MLOAD PUSH1 0x24 DUP5 ADD MSTORE DUP5 MLOAD DUP6 SWAP4 SWAP2 SWAP3 DUP4 SWAP3 PUSH1 0x44 ADD SWAP2 SWAP1 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 DUP4 ISZERO PUSH2 0x1213 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x11FB JUMP INVALID GASLIMIT PUSH15 0x756D657261626C655365743A20696E PUSH5 0x6578206F75 PUSH21 0x206F6620626F756E64734552433732313A20747261 PUSH15 0x7366657220746F206E6F6E20455243 CALLDATACOPY ORIGIN BALANCE MSTORE PUSH6 0x636569766572 KECCAK256 PUSH10 0x6D706C656D656E746572 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH21 0x72616E7366657220746F20746865207A65726F2061 PUSH5 0x6472657373 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH16 0x70657261746F7220717565727920666F PUSH19 0x206E6F6E6578697374656E7420746F6B656E45 MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76652063616C6C6572206973206E6F74206F PUSH24 0x6E6572206E6F7220617070726F76656420666F7220616C6C GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH3 0x616C61 PUSH15 0x636520717565727920666F72207468 PUSH6 0x207A65726F20 PUSH2 0x6464 PUSH19 0x6573734552433732313A206F776E6572207175 PUSH6 0x727920666F72 KECCAK256 PUSH15 0x6F6E6578697374656E7420746F6B65 PUSH15 0x456E756D657261626C654D61703A20 PUSH10 0x6E646578206F7574206F PUSH7 0x20626F756E6473 GASLIMIT MSTORE NUMBER CALLDATACOPY ORIGIN BALANCE GASPRICE KECCAK256 PUSH2 0x7070 PUSH19 0x6F76656420717565727920666F72206E6F6E65 PUSH25 0x697374656E7420746F6B656E4552433732313A207472616E73 PUSH7 0x6572206F662074 PUSH16 0x6B656E2074686174206973206E6F7420 PUSH16 0x776E4552433732314D65746164617461 GASPRICE KECCAK256 SSTORE MSTORE 0x49 KECCAK256 PUSH18 0x7565727920666F72206E6F6E657869737465 PUSH15 0x7420746F6B656E4552433732313A20 PUSH2 0x7070 PUSH19 0x6F76616C20746F2063757272656E74206F776E PUSH6 0x724552433732 BALANCE GASPRICE KECCAK256 PUSH21 0x72616E736665722063616C6C6572206973206E6F74 KECCAK256 PUSH16 0x776E6572206E6F7220617070726F7665 PUSH5 0xA264697066 PUSH20 0x58221220EFF40EA84425C10107B69BFD956C2B81 0xAB 0x26 PUSH18 0x6F08D5AA488D2E4C164DD7B30764736F6C63 NUMBER STOP MOD 0xC STOP CALLER ", + "sourceMap": "125:62:25:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;965:148:1;;;;;;;;;;;;;;;;-1:-1:-1;965:148:1;-1:-1:-1;;;;;;965:148:1;;:::i;:::-;;;;;;;;;;;;;;;;;;4517:98:10;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7222:217;;;;;;;;;;;;;;;;-1:-1:-1;7222:217:10;;:::i;:::-;;;;-1:-1:-1;;;;;7222:217:10;;;;;;;;;;;;;;6766:395;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6766:395:10;;;;;;;;:::i;:::-;;6260:208;;;:::i;:::-;;;;;;;;;;;;;;;;8086:300;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8086:300:10;;;;;;;;;;;;;;;;;:::i;6029:160::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6029:160:10;;;;;;;;:::i;8452:149::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;8452:149:10;;;;;;;;;;;;;;;;;:::i;6540:169::-;;;;;;;;;;;;;;;;-1:-1:-1;6540:169:10;;:::i;4280:175::-;;;;;;;;;;;;;;;;-1:-1:-1;4280:175:10;;:::i;5855:95::-;;;:::i;4005:218::-;;;;;;;;;;;;;;;;-1:-1:-1;4005:218:10;-1:-1:-1;;;;;4005:218:10;;:::i;4679:102::-;;;:::i;7506:290::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7506:290:10;;;;;;;;;;:::i;8667:282::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8667:282:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8667:282:10;;-1:-1:-1;8667:282:10;;-1:-1:-1;;;;;8667:282:10:i;4847:776::-;;;;;;;;;;;;;;;;-1:-1:-1;4847:776:10;;:::i;7862:162::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7862:162:10;;;;;;;;;;:::i;965:148:1:-;-1:-1:-1;;;;;;1073:33:1;;1050:4;1073:33;;;;;;;;;;;;;965:148;;;;:::o;4517:98:10:-;4603:5;4596:12;;;;;;;;-1:-1:-1;;4596:12:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4571:13;;4596:12;;4603:5;;4596:12;;4603:5;4596:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4517:98;:::o;7222:217::-;7298:7;7325:16;7333:7;7325;:16::i;:::-;7317:73;;;;-1:-1:-1;;;7317:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7408:24:10;;;;:15;:24;;;;;;-1:-1:-1;;;;;7408:24:10;;7222:217::o;6766:395::-;6846:13;6862:23;6877:7;6862:14;:23::i;:::-;6846:39;;6909:5;-1:-1:-1;;;;;6903:11:10;:2;-1:-1:-1;;;;;6903:11:10;;;6895:57;;;;-1:-1:-1;;;6895:57:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6987:5;-1:-1:-1;;;;;6971:21:10;:12;:10;:12::i;:::-;-1:-1:-1;;;;;6971:21:10;;:69;;;;6996:44;7020:5;7027:12;:10;:12::i;:::-;6996:23;:44::i;:::-;6963:159;;;;-1:-1:-1;;;6963:159:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7133:21;7142:2;7146:7;7133:8;:21::i;:::-;6766:395;;;:::o;6260:208::-;6321:7;6440:21;:12;:19;:21::i;:::-;6433:28;;6260:208;:::o;8086:300::-;8245:41;8264:12;:10;:12::i;:::-;8278:7;8245:18;:41::i;:::-;8237:103;;;;-1:-1:-1;;;8237:103:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8351:28;8361:4;8367:2;8371:7;8351:9;:28::i;6029:160::-;-1:-1:-1;;;;;6152:20:10;;6126:7;6152:20;;;:13;:20;;;;;:30;;6176:5;6152:23;:30::i;:::-;6145:37;;6029:160;;;;;:::o;8452:149::-;8555:39;8572:4;8578:2;8582:7;8555:39;;;;;;;;;;;;:16;:39::i;6540:169::-;6615:7;;6656:22;:12;6672:5;6656:15;:22::i;:::-;-1:-1:-1;6634:44:10;6540:169;-1:-1:-1;;;6540:169:10:o;4280:175::-;4352:7;4378:70;4395:7;4378:70;;;;;;;;;;;;;;;;;:12;;:70;:16;:70::i;5855:95::-;5935:8;5928:15;;;;;;;;-1:-1:-1;;5928:15:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5903:13;;5928:15;;5935:8;;5928:15;;5935:8;5928:15;;;;;;;;;;;;;;;;;;;;;;;;4005:218;4077:7;-1:-1:-1;;;;;4104:19:10;;4096:74;;;;-1:-1:-1;;;4096:74:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4187:20:10;;;;;;:13;:20;;;;;:29;;:27;:29::i;4679:102::-;4767:7;4760:14;;;;;;;;-1:-1:-1;;4760:14:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4735:13;;4760:14;;4767:7;;4760:14;;4767:7;4760:14;;;;;;;;;;;;;;;;;;;;;;;;7506:290;7620:12;:10;:12::i;:::-;-1:-1:-1;;;;;7608:24:10;:8;-1:-1:-1;;;;;7608:24:10;;;7600:62;;;;;-1:-1:-1;;;7600:62:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;7718:8;7673:18;:32;7692:12;:10;:12::i;:::-;-1:-1:-1;;;;;7673:32:10;;;;;;;;;;;;;;;;;-1:-1:-1;7673:32:10;;;:42;;;;;;;;;;;;:53;;-1:-1:-1;;7673:53:10;;;;;;;;;;;7756:12;:10;:12::i;:::-;-1:-1:-1;;;;;7741:48:10;;7780:8;7741:48;;;;;;;;;;;;;;;;;;;;7506:290;;:::o;8667:282::-;8798:41;8817:12;:10;:12::i;:::-;8831:7;8798:18;:41::i;:::-;8790:103;;;;-1:-1:-1;;;8790:103:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8903:39;8917:4;8923:2;8927:7;8936:5;8903:13;:39::i;:::-;8667:282;;;;:::o;4847:776::-;4920:13;4953:16;4961:7;4953;:16::i;:::-;4945:76;;;;-1:-1:-1;;;4945:76:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5058:19;;;;:10;:19;;;;;;;;;5032:45;;;;;;-1:-1:-1;;5032:45:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;:45;;;5058:19;5032:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5087:18;5108:9;:7;:9::i;:::-;5087:30;;5196:4;5190:18;5212:1;5190:23;5186:70;;;-1:-1:-1;5236:9:10;-1:-1:-1;5229:16:10;;5186:70;5358:23;;:27;5354:106;;5432:4;5438:9;5415:33;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5415:33:10;;;;;;;;;;;;;-1:-1:-1;;5415:33:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5401:48;;;;;;5354:106;5590:4;5596:18;:7;:16;:18::i;:::-;5573:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5573:42:10;;;;;;;;;;;;;-1:-1:-1;;5573:42:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5559:57;;;;4847:776;;;:::o;7862:162::-;-1:-1:-1;;;;;7982:25:10;;;7959:4;7982:25;;;:18;:25;;;;;;;;:35;;;;;;;;;;;;;;;7862:162::o;10383:125::-;10448:4;10471:30;:12;10493:7;10471:21;:30::i;598:104:16:-;685:10;598:104;:::o;16225:189:10:-;16299:24;;;;:15;:24;;;;;:29;;-1:-1:-1;;;;;;16299:29:10;-1:-1:-1;;;;;16299:29:10;;;;;;;;:24;;16352:23;16299:24;16352:14;:23::i;:::-;-1:-1:-1;;;;;16343:46:10;;;;;;;;;;;16225:189;;:::o;7820:121:17:-;7889:7;7915:19;7923:3;7915:7;:19::i;10666:351:10:-;10759:4;10783:16;10791:7;10783;:16::i;:::-;10775:73;;;;-1:-1:-1;;;10775:73:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10858:13;10874:23;10889:7;10874:14;:23::i;:::-;10858:39;;10926:5;-1:-1:-1;;;;;10915:16:10;:7;-1:-1:-1;;;;;10915:16:10;;:51;;;;10959:7;-1:-1:-1;;;;;10935:31:10;:20;10947:7;10935:11;:20::i;:::-;-1:-1:-1;;;;;10935:31:10;;10915:51;:94;;;;10970:39;10994:5;11001:7;10970:23;:39::i;:::-;10907:103;10666:351;-1:-1:-1;;;;10666:351:10:o;13707:584::-;13831:4;-1:-1:-1;;;;;13804:31:10;:23;13819:7;13804:14;:23::i;:::-;-1:-1:-1;;;;;13804:31:10;;13796:85;;;;-1:-1:-1;;;13796:85:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;13917:16:10;;13909:65;;;;-1:-1:-1;;;13909:65:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13985:39;14006:4;14012:2;14016:7;13985:20;:39::i;:::-;14086:29;14103:1;14107:7;14086:8;:29::i;:::-;-1:-1:-1;;;;;14126:19:10;;;;;;:13;:19;;;;;:35;;14153:7;14126:26;:35::i;:::-;-1:-1:-1;;;;;;14171:17:10;;;;;;:13;:17;;;;;:30;;14193:7;14171:21;:30::i;:::-;-1:-1:-1;14212:29:10;:12;14229:7;14238:2;14212:16;:29::i;:::-;;14276:7;14272:2;-1:-1:-1;;;;;14257:27:10;14266:4;-1:-1:-1;;;;;14257:27:10;;;;;;;;;;;13707:584;;;:::o;9250:135:18:-;9321:7;9355:22;9359:3;9371:5;9355:3;:22::i;8269:233:17:-;8349:7;;;;8408:22;8412:3;8424:5;8408:3;:22::i;:::-;8377:53;;;;-1:-1:-1;8269:233:17;-1:-1:-1;;;;;8269:233:17:o;9522:211::-;9629:7;9679:44;9684:3;9704;9710:12;9679:4;:44::i;:::-;9671:53;-1:-1:-1;9522:211:17;;;;;;:::o;9811:269:10:-;9924:28;9934:4;9940:2;9944:7;9924:9;:28::i;:::-;9970:48;9993:4;9999:2;10003:7;10012:5;9970:22;:48::i;:::-;9962:111;;;;-1:-1:-1;;;9962:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;210:725:19;266:13;483:10;479:51;;-1:-1:-1;509:10:19;;;;;;;;;;;;-1:-1:-1;;;509:10:19;;;;;;479:51;554:5;539:12;593:75;600:9;;593:75;;625:8;;655:2;647:10;;;;593:75;;;677:19;709:6;699:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;699:17:19;-1:-1:-1;769:5:19;;-1:-1:-1;677:39:19;-1:-1:-1;;;742:10:19;;784:114;791:9;;784:114;;859:2;852:4;:9;847:2;:14;834:29;;816:6;823:7;;;;;;;816:15;;;;;;;;;;;:47;-1:-1:-1;;;;;816:47:19;;;;;;;;-1:-1:-1;885:2:19;877:10;;;;784:114;;;-1:-1:-1;921:6:19;210:725;-1:-1:-1;;;;210:725:19:o;7588:149:17:-;7672:4;7695:35;7705:3;7725;7695:9;:35::i;4491:108::-;4573:19;;4491:108::o;8365:135:18:-;8435:4;8458:35;8466:3;8486:5;8458:7;:35::i;8068:129::-;8135:4;8158:32;8163:3;8183:5;8158:4;:32::i;7027:183:17:-;7116:4;7139:64;7144:3;7164;-1:-1:-1;;;;;7178:23:17;;7139:4;:64::i;4452:201:18:-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:18;;;;-1:-1:-1;;;4538:73:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;4942:274:17:-;5045:19;;5009:7;;;;5045:27;-1:-1:-1;5037:74:17;;;;-1:-1:-1;;;5037:74:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5122:22;5147:3;:12;;5160:5;5147:19;;;;;;;;;;;;;;;;;;5122:44;;5184:5;:10;;;5196:5;:12;;;5176:33;;;;;4942:274;;;;;:::o;6403:315::-;6497:7;6535:17;;;:12;;;:17;;;;;;6585:12;6570:13;6562:36;;;;-1:-1:-1;;;6562:36:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6651:3;:12;;6675:1;6664:8;:12;6651:26;;;;;;;;;;;;;;;;;;:33;;;6644:40;;;6403:315;;;;;:::o;15524:589:10:-;15644:4;15669:15;:2;-1:-1:-1;;;;;15669:13:10;;:15::i;:::-;15664:58;;-1:-1:-1;15707:4:10;15700:11;;15664:58;15731:23;15757:246;-1:-1:-1;;;15868:12:10;:10;:12::i;:::-;15894:4;15912:7;15933:5;15773:175;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;-1:-1:-1;;;;;15773:175:10;;;;;;;;;;;15757:246;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15757:15:10;;;:246;:15;:246::i;:::-;15731:272;;16013:13;16040:10;16029:32;;;;;;;;;;;;;;;-1:-1:-1;16029:32:10;-1:-1:-1;;;;;;16079:26:10;-1:-1:-1;;;16079:26:10;;-1:-1:-1;;;15524:589:10;;;;;;:::o;4278:123:17:-;4349:4;4372:17;;;:12;;;;;:17;;;;;;:22;;;4278:123::o;2212:1512:18:-;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:18;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;;1640:404;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:18;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:18;2015:12;;1836:678:17;1912:4;2045:17;;;:12;;;:17;;;;;;2077:13;2073:435;;-1:-1:-1;;2161:38:17;;;;;;;;;;;;;;;;;;2143:57;;;;;;;;:12;:57;;;;;;;;;;;;;;;;;;;;;;;;2355:19;;2335:17;;;:12;;;:17;;;;;;;:39;2388:11;;2073:435;2466:5;2430:3;:12;;2454:1;2443:8;:12;2430:26;;;;;;;;;;;;;;;;;;:33;;:41;;;;2492:5;2485:12;;;;;726:413:15;1086:20;1124:8;;;726:413::o;3581:193::-;3684:12;3715:52;3737:6;3745:4;3751:1;3754:12;3684;4858:18;4869:6;4858:10;:18::i;:::-;4850:60;;;;;-1:-1:-1;;;4850:60:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;4981:12;4995:23;5022:6;-1:-1:-1;;;;;5022:11:15;5042:5;5050:4;5022:33;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5022:33:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4980:75;;;;5072:52;5090:7;5099:10;5111:12;5072:17;:52::i;:::-;5065:59;4608:523;-1:-1:-1;;;;;;;4608:523:15:o;7091:725::-;7206:12;7234:7;7230:580;;;-1:-1:-1;7264:10:15;7257:17;;7230:580;7375:17;;:21;7371:429;;7633:10;7627:17;7693:15;7680:10;7676:2;7672:19;7665:44;7582:145;7765:20;;-1:-1:-1;;;7765:20:15;;;;;;;;;;;;;;;;;7772:12;;7765:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "methodIdentifiers": { + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "baseURI()": "6c0360eb", + "getApproved(uint256)": "081812fc", + "isApprovedForAll(address,address)": "e985e9c5", + "name()": "06fdde03", + "ownerOf(uint256)": "6352211e", + "safeTransferFrom(address,address,uint256)": "42842e0e", + "safeTransferFrom(address,address,uint256,bytes)": "b88d4fde", + "setApprovalForAll(address,bool)": "a22cb465", + "supportsInterface(bytes4)": "01ffc9a7", + "symbol()": "95d89b41", + "tokenByIndex(uint256)": "4f6ccce7", + "tokenOfOwnerByIndex(address,uint256)": "2f745c59", + "tokenURI(uint256)": "c87b56dd", + "totalSupply()": "18160ddd", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + } + }, + "errors": [ + { + "component": "general", + "errorCode": "5667", + "formattedMessage": "contracts/Bank1155.sol:72:32: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external override returns(bytes4) {\n ^--------------^\n", + "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", + "severity": "warning", + "sourceLocation": { + "end": 3159, + "file": "contracts/Bank1155.sol", + "start": 3143 + }, + "type": "Warning" + }, + { + "component": "general", + "errorCode": "5667", + "formattedMessage": "contracts/Bank1155.sol:94:37: Warning: Unused function parameter. Remove or comment out the variable name to silence this warning.\n ... function onERC1155BatchReceived(address operator, address from, uint256[] calldata ...\n ^--------------^\n", + "message": "Unused function parameter. Remove or comment out the variable name to silence this warning.", + "severity": "warning", + "sourceLocation": { + "end": 4583, + "file": "contracts/Bank1155.sol", + "start": 4567 + }, + "type": "Warning" + } + ], + "sources": { + "@openzeppelin/contracts/access/Ownable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "exportedSymbols": { + "Ownable": [ + 109 + ] + }, + "id": 110, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:0" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../utils/Context.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 110, + "sourceUnit": 3287, + "src": "66:30:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3286, + "src": "621:7:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$3286", + "typeString": "contract Context" + } + }, + "id": 5, + "nodeType": "InheritanceSpecifier", + "src": "621:7:0" + } + ], + "contractDependencies": [ + 3286 + ], + "contractKind": "contract", + "documentation": { + "id": 3, + "nodeType": "StructuredDocumentation", + "src": "97:494:0", + "text": " @dev Contract module which provides a basic access control mechanism, where\n there is an account (an owner) that can be granted exclusive access to\n specific functions.\n By default, the owner account will be the one that deploys the contract. This\n can later be changed with {transferOwnership}.\n This module is used through inheritance. It will make available the modifier\n `onlyOwner`, which can be applied to your functions to restrict their use to\n the owner." + }, + "fullyImplemented": true, + "id": 109, + "linearizedBaseContracts": [ + 109, + 3286 + ], + "name": "Ownable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 7, + "mutability": "mutable", + "name": "_owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 109, + "src": "635:22:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 6, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "635:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "private" + }, + { + "anonymous": false, + "documentation": null, + "id": 13, + "name": "OwnershipTransferred", + "nodeType": "EventDefinition", + "parameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 9, + "indexed": true, + "mutability": "mutable", + "name": "previousOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "691:29:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 8, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "691:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 11, + "indexed": true, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "722:24:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 10, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "722:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "690:57:0" + }, + "src": "664:84:0" + }, + { + "body": { + "id": 34, + "nodeType": "Block", + "src": "874:135:0", + "statements": [ + { + "assignments": [ + 18 + ], + "declarations": [ + { + "constant": false, + "id": 18, + "mutability": "mutable", + "name": "msgSender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 34, + "src": "884:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 17, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "884:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 21, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 19, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "904:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "904:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "884:32:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 24, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 22, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "926:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 23, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "935:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "926:18:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 25, + "nodeType": "ExpressionStatement", + "src": "926:18:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 29, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "988:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 28, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 27, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "980:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "980:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 31, + "name": "msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "992:9:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 26, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "959:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 32, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "959:43:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 33, + "nodeType": "EmitStatement", + "src": "954:48:0" + } + ] + }, + "documentation": { + "id": 14, + "nodeType": "StructuredDocumentation", + "src": "754:91:0", + "text": " @dev Initializes the contract setting the deployer as the initial owner." + }, + "id": 35, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 15, + "nodeType": "ParameterList", + "parameters": [], + "src": "862:2:0" + }, + "returnParameters": { + "id": 16, + "nodeType": "ParameterList", + "parameters": [], + "src": "874:0:0" + }, + "scope": 109, + "src": "850:159:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 43, + "nodeType": "Block", + "src": "1140:30:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 41, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1157:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 40, + "id": 42, + "nodeType": "Return", + "src": "1150:13:0" + } + ] + }, + "documentation": { + "id": 36, + "nodeType": "StructuredDocumentation", + "src": "1015:65:0", + "text": " @dev Returns the address of the current owner." + }, + "functionSelector": "8da5cb5b", + "id": 44, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "owner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [], + "src": "1099:2:0" + }, + "returnParameters": { + "id": 40, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 39, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 44, + "src": "1131:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1131:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1130:9:0" + }, + "scope": 109, + "src": "1085:85:0", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 57, + "nodeType": "Block", + "src": "1279:96:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 52, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 48, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "1297:5:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 49, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1297:7:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 50, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "1308:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 51, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1308:12:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1297:23:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572", + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1322:34:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + }, + "value": "Ownable: caller is not the owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9924ebdf1add33d25d4ef888e16131f0a5687b0580a36c21b5c301a6c462effe", + "typeString": "literal_string \"Ownable: caller is not the owner\"" + } + ], + "id": 47, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1289:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 54, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1289:68:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 55, + "nodeType": "ExpressionStatement", + "src": "1289:68:0" + }, + { + "id": 56, + "nodeType": "PlaceholderStatement", + "src": "1367:1:0" + } + ] + }, + "documentation": { + "id": 45, + "nodeType": "StructuredDocumentation", + "src": "1176:77:0", + "text": " @dev Throws if called by any account other than the owner." + }, + "id": 58, + "name": "onlyOwner", + "nodeType": "ModifierDefinition", + "overrides": null, + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [], + "src": "1276:2:0" + }, + "src": "1258:117:0", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 79, + "nodeType": "Block", + "src": "1771:91:0", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 65, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1807:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1823:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1815:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 66, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1815:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1815:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 64, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "1786:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1786:40:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "EmitStatement", + "src": "1781:45:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 77, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 72, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "1836:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1853:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 74, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1845:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 73, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1845:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1845:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "1836:19:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 78, + "nodeType": "ExpressionStatement", + "src": "1836:19:0" + } + ] + }, + "documentation": { + "id": 59, + "nodeType": "StructuredDocumentation", + "src": "1381:331:0", + "text": " @dev Leaves the contract without owner. It will not be possible to call\n `onlyOwner` functions anymore. Can only be called by the current owner.\n NOTE: Renouncing ownership will leave the contract without an owner,\n thereby removing any functionality that is only available to the owner." + }, + "functionSelector": "715018a6", + "id": 80, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 62, + "modifierName": { + "argumentTypes": null, + "id": 61, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "1761:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1761:9:0" + } + ], + "name": "renounceOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 60, + "nodeType": "ParameterList", + "parameters": [], + "src": "1743:2:0" + }, + "returnParameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [], + "src": "1771:0:0" + }, + "scope": 109, + "src": "1717:145:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 107, + "nodeType": "Block", + "src": "2081:170:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 89, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "2099:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2119:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 91, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2111:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 90, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2111:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2111:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2099:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373", + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2123:40:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + }, + "value": "Ownable: new owner is the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_245f15ff17f551913a7a18385165551503906a406f905ac1c2437281a7cd0cfe", + "typeString": "literal_string \"Ownable: new owner is the zero address\"" + } + ], + "id": 88, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2091:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2091:73:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 97, + "nodeType": "ExpressionStatement", + "src": "2091:73:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 99, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "2200:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 100, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "2208:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 98, + "name": "OwnershipTransferred", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 13, + "src": "2179:20:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,address)" + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2179:38:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 102, + "nodeType": "EmitStatement", + "src": "2174:43:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 103, + "name": "_owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 7, + "src": "2227:6:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 104, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "2236:8:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2227:17:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 106, + "nodeType": "ExpressionStatement", + "src": "2227:17:0" + } + ] + }, + "documentation": { + "id": 81, + "nodeType": "StructuredDocumentation", + "src": "1868:138:0", + "text": " @dev Transfers ownership of the contract to a new account (`newOwner`).\n Can only be called by the current owner." + }, + "functionSelector": "f2fde38b", + "id": 108, + "implemented": true, + "kind": "function", + "modifiers": [ + { + "arguments": null, + "id": 86, + "modifierName": { + "argumentTypes": null, + "id": 85, + "name": "onlyOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 58, + "src": "2071:9:0", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2071:9:0" + } + ], + "name": "transferOwnership", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 83, + "mutability": "mutable", + "name": "newOwner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 108, + "src": "2038:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 82, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2038:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2037:18:0" + }, + "returnParameters": { + "id": 87, + "nodeType": "ParameterList", + "parameters": [], + "src": "2081:0:0" + }, + "scope": 109, + "src": "2011:240:0", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + } + ], + "scope": 110, + "src": "592:1661:0" + } + ], + "src": "33:2221:0" + }, + "id": 0 + }, + "@openzeppelin/contracts/introspection/ERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol", + "exportedSymbols": { + "ERC165": [ + 166 + ] + }, + "id": 167, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 111, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:1" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol", + "file": "./IERC165.sol", + "id": 112, + "nodeType": "ImportDirective", + "scope": 167, + "sourceUnit": 179, + "src": "66:23:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 114, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 178, + "src": "291:7:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$178", + "typeString": "contract IERC165" + } + }, + "id": 115, + "nodeType": "InheritanceSpecifier", + "src": "291:7:1" + } + ], + "contractDependencies": [ + 178 + ], + "contractKind": "contract", + "documentation": { + "id": 113, + "nodeType": "StructuredDocumentation", + "src": "91:171:1", + "text": " @dev Implementation of the {IERC165} interface.\n Contracts may inherit from this and call {_registerInterface} to declare\n their support of an interface." + }, + "fullyImplemented": true, + "id": 166, + "linearizedBaseContracts": [ + 166, + 178 + ], + "name": "ERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 118, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC165", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 166, + "src": "388:57:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 116, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "388:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783031666663396137", + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "435:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_33540519_by_1", + "typeString": "int_const 33540519" + }, + "value": "0x01ffc9a7" + }, + "visibility": "private" + }, + { + "constant": false, + "documentation": { + "id": 119, + "nodeType": "StructuredDocumentation", + "src": "452:82:1", + "text": " @dev Mapping of interface ids to whether or not it's supported." + }, + "id": 123, + "mutability": "mutable", + "name": "_supportedInterfaces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 166, + "src": "539:52:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "typeName": { + "id": 122, + "keyType": { + "id": 120, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "547:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "Mapping", + "src": "539:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + }, + "valueType": { + "id": 121, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "557:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "body": { + "id": 130, + "nodeType": "Block", + "src": "622:193:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 127, + "name": "_INTERFACE_ID_ERC165", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "787:20:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 126, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "768:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:40:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 129, + "nodeType": "ExpressionStatement", + "src": "768:40:1" + } + ] + }, + "documentation": null, + "id": 131, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 124, + "nodeType": "ParameterList", + "parameters": [], + "src": "610:2:1" + }, + "returnParameters": { + "id": 125, + "nodeType": "ParameterList", + "parameters": [], + "src": "622:0:1" + }, + "scope": 166, + "src": "598:217:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "baseFunctions": [ + 177 + ], + "body": { + "id": 144, + "nodeType": "Block", + "src": "1056:57:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 140, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1073:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 142, + "indexExpression": { + "argumentTypes": null, + "id": 141, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 134, + "src": "1094:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1073:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 139, + "id": 143, + "nodeType": "Return", + "src": "1066:40:1" + } + ] + }, + "documentation": { + "id": 132, + "nodeType": "StructuredDocumentation", + "src": "821:139:1", + "text": " @dev See {IERC165-supportsInterface}.\n Time complexity O(1), guaranteed to always use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 136, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "1032:8:1" + }, + "parameters": { + "id": 135, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 134, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 145, + "src": "992:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 133, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "992:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "991:20:1" + }, + "returnParameters": { + "id": 139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 138, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 145, + "src": "1050:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 137, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1050:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1049:6:1" + }, + "scope": 166, + "src": "965:148:1", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 164, + "nodeType": "Block", + "src": "1572:133:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 152, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "1590:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30786666666666666666", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1605:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_4294967295_by_1", + "typeString": "int_const 4294967295" + }, + "value": "0xffffffff" + }, + "src": "1590:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433136353a20696e76616c696420696e74657266616365206964", + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1617:30:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee", + "typeString": "literal_string \"ERC165: invalid interface id\"" + }, + "value": "ERC165: invalid interface id" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_282912c0dfceceb28d77d0333f496b83948f9ba5b3154358a8b140b849289dee", + "typeString": "literal_string \"ERC165: invalid interface id\"" + } + ], + "id": 151, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1582:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1582:66:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 157, + "nodeType": "ExpressionStatement", + "src": "1582:66:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 158, + "name": "_supportedInterfaces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 123, + "src": "1658:20:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes4_$_t_bool_$", + "typeString": "mapping(bytes4 => bool)" + } + }, + "id": 160, + "indexExpression": { + "argumentTypes": null, + "id": 159, + "name": "interfaceId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "1679:11:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1658:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1694:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1658:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 163, + "nodeType": "ExpressionStatement", + "src": "1658:40:1" + } + ] + }, + "documentation": { + "id": 146, + "nodeType": "StructuredDocumentation", + "src": "1119:383:1", + "text": " @dev Registers the contract as an implementer of the interface defined by\n `interfaceId`. Support of the actual ERC165 interface is automatic and\n registering its interface id is not required.\n See {IERC165-supportsInterface}.\n Requirements:\n - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`)." + }, + "id": 165, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_registerInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 165, + "src": "1535:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 147, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1535:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1534:20:1" + }, + "returnParameters": { + "id": 150, + "nodeType": "ParameterList", + "parameters": [], + "src": "1572:0:1" + }, + "scope": 166, + "src": "1507:198:1", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 167, + "src": "263:1444:1" + } + ], + "src": "33:1675:1" + }, + "id": 1 + }, + "@openzeppelin/contracts/introspection/IERC165.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol", + "exportedSymbols": { + "IERC165": [ + 178 + ] + }, + "id": 179, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 168, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:2" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 169, + "nodeType": "StructuredDocumentation", + "src": "66:279:2", + "text": " @dev Interface of the ERC165 standard, as defined in the\n https://eips.ethereum.org/EIPS/eip-165[EIP].\n Implementers can declare support of contract interfaces, which can then be\n queried by others ({ERC165Checker}).\n For an implementation, see {ERC165}." + }, + "fullyImplemented": false, + "id": 178, + "linearizedBaseContracts": [ + 178 + ], + "name": "IERC165", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 170, + "nodeType": "StructuredDocumentation", + "src": "370:340:2", + "text": " @dev Returns true if this contract implements the interface defined by\n `interfaceId`. See the corresponding\n https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section]\n to learn more about how these ids are created.\n This function call must use less than 30 000 gas." + }, + "functionSelector": "01ffc9a7", + "id": 177, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "supportsInterface", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 173, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 172, + "mutability": "mutable", + "name": "interfaceId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "742:18:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 171, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "742:6:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "741:20:2" + }, + "returnParameters": { + "id": 176, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 175, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 177, + "src": "785:4:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 174, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "785:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "784:6:2" + }, + "scope": 178, + "src": "715:76:2", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 179, + "src": "346:447:2" + } + ], + "src": "33:761:2" + }, + "id": 2 + }, + "@openzeppelin/contracts/math/SafeMath.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 533 + ] + }, + "id": 534, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 180, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:3" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 181, + "nodeType": "StructuredDocumentation", + "src": "66:563:3", + "text": " @dev Wrappers over Solidity's arithmetic operations with added overflow\n checks.\n Arithmetic operations in Solidity wrap on overflow. This can easily result\n in bugs, because programmers usually assume that an overflow raises an\n error, which is the standard behavior in high level programming languages.\n `SafeMath` restores this intuition by reverting the transaction when an\n operation overflows.\n Using this library instead of the unchecked operations eliminates an entire\n class of bugs, so it's recommended to use it always." + }, + "fullyImplemented": true, + "id": 533, + "linearizedBaseContracts": [ + 533 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 211, + "nodeType": "Block", + "src": "865:98:3", + "statements": [ + { + "assignments": [ + 194 + ], + "declarations": [ + { + "constant": false, + "id": 194, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 211, + "src": "875:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 193, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "875:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 198, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 195, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "887:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 196, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 186, + "src": "891:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "887:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "875:17:3" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 199, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "906:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 200, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "910:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "906:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 206, + "nodeType": "IfStatement", + "src": "902:28:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "921:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "928:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 204, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "920:10:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 192, + "id": 205, + "nodeType": "Return", + "src": "913:17:3" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "948:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 208, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 194, + "src": "954:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 209, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "947:9:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 192, + "id": 210, + "nodeType": "Return", + "src": "940:16:3" + } + ] + }, + "documentation": { + "id": 182, + "nodeType": "StructuredDocumentation", + "src": "653:131:3", + "text": " @dev Returns the addition of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 212, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryAdd", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 187, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 184, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 212, + "src": "805:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "805:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 186, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 212, + "src": "816:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 185, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "816:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "804:22:3" + }, + "returnParameters": { + "id": 192, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 212, + "src": "850:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 188, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "850:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 212, + "src": "856:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "856:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "849:15:3" + }, + "scope": 533, + "src": "789:174:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 238, + "nodeType": "Block", + "src": "1185:75:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 224, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1199:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 225, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "1203:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1199:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 231, + "nodeType": "IfStatement", + "src": "1195:28:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1214:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1221:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 229, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1213:10:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 223, + "id": 230, + "nodeType": "Return", + "src": "1206:17:3" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1241:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 233, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 215, + "src": "1247:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 234, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 217, + "src": "1251:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1247:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 236, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1240:13:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 223, + "id": 237, + "nodeType": "Return", + "src": "1233:20:3" + } + ] + }, + "documentation": { + "id": 213, + "nodeType": "StructuredDocumentation", + "src": "969:135:3", + "text": " @dev Returns the substraction of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 239, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "trySub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 218, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 215, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 239, + "src": "1125:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 214, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1125:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 217, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 239, + "src": "1136:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 216, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1136:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1124:22:3" + }, + "returnParameters": { + "id": 223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 220, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 239, + "src": "1170:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 219, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1170:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 222, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 239, + "src": "1176:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 221, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1176:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1169:15:3" + }, + "scope": 533, + "src": "1109:151:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 279, + "nodeType": "Block", + "src": "1484:359:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 251, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "1716:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1721:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1716:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 258, + "nodeType": "IfStatement", + "src": "1712:28:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1732:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 255, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1738:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 256, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1731:9:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 250, + "id": 257, + "nodeType": "Return", + "src": "1724:16:3" + } + }, + { + "assignments": [ + 260 + ], + "declarations": [ + { + "constant": false, + "id": 260, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 279, + "src": "1750:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 259, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1750:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 264, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 261, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "1762:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 262, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1766:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1762:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1750:17:3" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 265, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "1781:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "1785:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1781:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 268, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 244, + "src": "1790:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1781:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 274, + "nodeType": "IfStatement", + "src": "1777:33:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1808:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 272, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1800:10:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 250, + "id": 273, + "nodeType": "Return", + "src": "1793:17:3" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1828:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "id": 276, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 260, + "src": "1834:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 277, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1827:9:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 250, + "id": 278, + "nodeType": "Return", + "src": "1820:16:3" + } + ] + }, + "documentation": { + "id": 240, + "nodeType": "StructuredDocumentation", + "src": "1266:137:3", + "text": " @dev Returns the multiplication of two unsigned integers, with an overflow flag.\n _Available since v3.4._" + }, + "id": 280, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 245, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 242, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1424:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 241, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1424:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 244, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1435:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 243, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1435:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1423:22:3" + }, + "returnParameters": { + "id": 250, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 247, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1469:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 246, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1469:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 249, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1475:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 248, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1475:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1468:15:3" + }, + "scope": 533, + "src": "1408:435:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 306, + "nodeType": "Block", + "src": "2068:76:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 294, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 292, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "2082:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2087:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2082:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 299, + "nodeType": "IfStatement", + "src": "2078:29:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2098:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2105:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 297, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2097:10:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 291, + "id": 298, + "nodeType": "Return", + "src": "2090:17:3" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2125:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 303, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 301, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 283, + "src": "2131:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 302, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 285, + "src": "2135:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2131:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 304, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2124:13:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 291, + "id": 305, + "nodeType": "Return", + "src": "2117:20:3" + } + ] + }, + "documentation": { + "id": 281, + "nodeType": "StructuredDocumentation", + "src": "1849:138:3", + "text": " @dev Returns the division of two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 307, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryDiv", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 286, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 283, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 307, + "src": "2008:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2008:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 285, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 307, + "src": "2019:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 284, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2019:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2007:22:3" + }, + "returnParameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 288, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 307, + "src": "2053:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 287, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2053:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 290, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 307, + "src": "2059:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 289, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2059:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2052:15:3" + }, + "scope": 533, + "src": "1992:152:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 333, + "nodeType": "Block", + "src": "2379:76:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 319, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "2393:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2398:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2393:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 326, + "nodeType": "IfStatement", + "src": "2389:29:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2409:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2416:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 324, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2408:10:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 318, + "id": 325, + "nodeType": "Return", + "src": "2401:17:3" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2436:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 328, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 310, + "src": "2442:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 329, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 312, + "src": "2446:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2442:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 331, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "2435:13:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_uint256_$", + "typeString": "tuple(bool,uint256)" + } + }, + "functionReturnParameters": 318, + "id": 332, + "nodeType": "Return", + "src": "2428:20:3" + } + ] + }, + "documentation": { + "id": 308, + "nodeType": "StructuredDocumentation", + "src": "2150:148:3", + "text": " @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.\n _Available since v3.4._" + }, + "id": 334, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryMod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 310, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 334, + "src": "2319:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 309, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2319:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 312, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 334, + "src": "2330:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 311, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2330:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2318:22:3" + }, + "returnParameters": { + "id": 318, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 315, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 334, + "src": "2364:4:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 314, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2364:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 334, + "src": "2370:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2370:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2363:15:3" + }, + "scope": 533, + "src": "2303:152:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "2757:108:3", + "statements": [ + { + "assignments": [ + 345 + ], + "declarations": [ + { + "constant": false, + "id": 345, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 359, + "src": "2767:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 344, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2767:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 349, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 348, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 346, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "2779:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 347, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 339, + "src": "2783:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2779:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2767:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 351, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "2802:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 352, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 337, + "src": "2807:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2802:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206164646974696f6e206f766572666c6f77", + "id": 354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2810:29:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + }, + "value": "SafeMath: addition overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a", + "typeString": "literal_string \"SafeMath: addition overflow\"" + } + ], + "id": 350, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2794:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 355, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2794:46:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 356, + "nodeType": "ExpressionStatement", + "src": "2794:46:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 357, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "2857:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 343, + "id": 358, + "nodeType": "Return", + "src": "2850:8:3" + } + ] + }, + "documentation": { + "id": 335, + "nodeType": "StructuredDocumentation", + "src": "2461:224:3", + "text": " @dev Returns the addition of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `+` operator.\n Requirements:\n - Addition cannot overflow." + }, + "id": 360, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 340, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 337, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 360, + "src": "2703:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 336, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2703:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 339, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 360, + "src": "2714:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 338, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2714:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2702:22:3" + }, + "returnParameters": { + "id": 343, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 342, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 360, + "src": "2748:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 341, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2748:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2747:9:3" + }, + "scope": 533, + "src": "2690:175:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 381, + "nodeType": "Block", + "src": "3203:88:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 371, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "3221:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 372, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "3226:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3221:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a207375627472616374696f6e206f766572666c6f77", + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:32:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + }, + "value": "SafeMath: subtraction overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862", + "typeString": "literal_string \"SafeMath: subtraction overflow\"" + } + ], + "id": 370, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3213:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3213:49:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 376, + "nodeType": "ExpressionStatement", + "src": "3213:49:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 377, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 363, + "src": "3279:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 378, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 365, + "src": "3283:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3279:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 369, + "id": 380, + "nodeType": "Return", + "src": "3272:12:3" + } + ] + }, + "documentation": { + "id": 361, + "nodeType": "StructuredDocumentation", + "src": "2871:260:3", + "text": " @dev Returns the subtraction of two unsigned integers, reverting on\n overflow (when the result is negative).\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 382, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 363, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 382, + "src": "3149:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 362, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3149:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 365, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 382, + "src": "3160:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 364, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3160:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3148:22:3" + }, + "returnParameters": { + "id": 369, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 368, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 382, + "src": "3194:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3194:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3193:9:3" + }, + "scope": 533, + "src": "3136:155:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 415, + "nodeType": "Block", + "src": "3605:148:3", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 392, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3619:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3624:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3619:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 397, + "nodeType": "IfStatement", + "src": "3615:20:3", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3634:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "functionReturnParameters": 391, + "id": 396, + "nodeType": "Return", + "src": "3627:8:3" + } + }, + { + "assignments": [ + 399 + ], + "declarations": [ + { + "constant": false, + "id": 399, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 415, + "src": "3645:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 398, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3645:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 403, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 402, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 400, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3657:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 401, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "3661:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3657:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3645:17:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 405, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "3680:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 406, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "3684:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3680:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 408, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "3689:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3680:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77", + "id": 410, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3692:35:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + }, + "value": "SafeMath: multiplication overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3", + "typeString": "literal_string \"SafeMath: multiplication overflow\"" + } + ], + "id": 404, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3672:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3672:56:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "3672:56:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 413, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 399, + "src": "3745:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 391, + "id": 414, + "nodeType": "Return", + "src": "3738:8:3" + } + ] + }, + "documentation": { + "id": 383, + "nodeType": "StructuredDocumentation", + "src": "3297:236:3", + "text": " @dev Returns the multiplication of two unsigned integers, reverting on\n overflow.\n Counterpart to Solidity's `*` operator.\n Requirements:\n - Multiplication cannot overflow." + }, + "id": 416, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 416, + "src": "3551:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3551:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 416, + "src": "3562:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3562:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3550:22:3" + }, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 416, + "src": "3596:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3596:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3595:9:3" + }, + "scope": 533, + "src": "3538:215:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 437, + "nodeType": "Block", + "src": "4284:83:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 427, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "4302:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 428, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4306:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4302:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206469766973696f6e206279207a65726f", + "id": 430, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4309:28:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + }, + "value": "SafeMath: division by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f", + "typeString": "literal_string \"SafeMath: division by zero\"" + } + ], + "id": 426, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4294:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4294:44:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 432, + "nodeType": "ExpressionStatement", + "src": "4294:44:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 433, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 419, + "src": "4355:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 434, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "4359:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4355:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 425, + "id": 436, + "nodeType": "Return", + "src": "4348:12:3" + } + ] + }, + "documentation": { + "id": 417, + "nodeType": "StructuredDocumentation", + "src": "3759:453:3", + "text": " @dev Returns the integer division of two unsigned integers, reverting on\n division by zero. The result is rounded towards zero.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 438, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 419, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 438, + "src": "4230:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 418, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4230:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 421, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 438, + "src": "4241:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 420, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4241:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4229:22:3" + }, + "returnParameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 424, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 438, + "src": "4275:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4275:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4274:9:3" + }, + "scope": 533, + "src": "4217:150:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "4887:81:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 451, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 449, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "4905:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4909:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4905:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a206d6f64756c6f206279207a65726f", + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4912:26:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + }, + "value": "SafeMath: modulo by zero" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832", + "typeString": "literal_string \"SafeMath: modulo by zero\"" + } + ], + "id": 448, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4897:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4897:42:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 454, + "nodeType": "ExpressionStatement", + "src": "4897:42:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 455, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 441, + "src": "4956:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 456, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "4960:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 447, + "id": 458, + "nodeType": "Return", + "src": "4949:12:3" + } + ] + }, + "documentation": { + "id": 439, + "nodeType": "StructuredDocumentation", + "src": "4373:442:3", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting when dividing by zero.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 460, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 444, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 441, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 460, + "src": "4833:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 440, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4833:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 443, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 460, + "src": "4844:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 442, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4844:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4832:22:3" + }, + "returnParameters": { + "id": 447, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 446, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 460, + "src": "4878:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 445, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4878:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4877:9:3" + }, + "scope": 533, + "src": "4820:148:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 483, + "nodeType": "Block", + "src": "5527:68:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 475, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 473, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "5545:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 474, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5550:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5545:6:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 476, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 467, + "src": "5553:12:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 472, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5537:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5537:29:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 478, + "nodeType": "ExpressionStatement", + "src": "5537:29:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 479, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 463, + "src": "5583:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 480, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 465, + "src": "5587:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5583:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 471, + "id": 482, + "nodeType": "Return", + "src": "5576:12:3" + } + ] + }, + "documentation": { + "id": 461, + "nodeType": "StructuredDocumentation", + "src": "4974:453:3", + "text": " @dev Returns the subtraction of two unsigned integers, reverting with custom message on\n overflow (when the result is negative).\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {trySub}.\n Counterpart to Solidity's `-` operator.\n Requirements:\n - Subtraction cannot overflow." + }, + "id": 484, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 463, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 484, + "src": "5445:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 462, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5445:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 465, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 484, + "src": "5456:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 464, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5456:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 467, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 484, + "src": "5467:26:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 466, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5467:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5444:50:3" + }, + "returnParameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 470, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 484, + "src": "5518:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5518:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5517:9:3" + }, + "scope": 533, + "src": "5432:163:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 507, + "nodeType": "Block", + "src": "6347:67:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 499, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 497, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "6365:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6369:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6365:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 500, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 491, + "src": "6372:12:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 496, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6357:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6357:28:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 502, + "nodeType": "ExpressionStatement", + "src": "6357:28:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 503, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 487, + "src": "6402:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 504, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 489, + "src": "6406:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6402:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 495, + "id": 506, + "nodeType": "Return", + "src": "6395:12:3" + } + ] + }, + "documentation": { + "id": 485, + "nodeType": "StructuredDocumentation", + "src": "5601:646:3", + "text": " @dev Returns the integer division of two unsigned integers, reverting with custom message on\n division by zero. The result is rounded towards zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryDiv}.\n Counterpart to Solidity's `/` operator. Note: this function uses a\n `revert` opcode (which leaves remaining gas untouched) while Solidity\n uses an invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 508, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "div", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 492, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 487, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 508, + "src": "6265:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 486, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6265:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 489, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 508, + "src": "6276:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 488, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6276:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 491, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 508, + "src": "6287:26:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 490, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6287:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6264:50:3" + }, + "returnParameters": { + "id": 495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 494, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 508, + "src": "6338:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 493, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6338:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6337:9:3" + }, + "scope": 533, + "src": "6252:162:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 531, + "nodeType": "Block", + "src": "7155:67:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 523, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 521, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "7173:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 522, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7177:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7173:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 515, + "src": "7180:12:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 520, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7165:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 525, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7165:28:3", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 526, + "nodeType": "ExpressionStatement", + "src": "7165:28:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 529, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 527, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 511, + "src": "7210:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "id": 528, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 513, + "src": "7214:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "7210:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 519, + "id": 530, + "nodeType": "Return", + "src": "7203:12:3" + } + ] + }, + "documentation": { + "id": 509, + "nodeType": "StructuredDocumentation", + "src": "6420:635:3", + "text": " @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\n reverting with custom message when dividing by zero.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryMod}.\n Counterpart to Solidity's `%` operator. This function uses a `revert`\n opcode (which leaves remaining gas untouched) while Solidity uses an\n invalid opcode to revert (consuming all remaining gas).\n Requirements:\n - The divisor cannot be zero." + }, + "id": 532, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mod", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 516, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 511, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 532, + "src": "7073:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 510, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7073:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 513, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 532, + "src": "7084:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 512, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7084:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 515, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 532, + "src": "7095:26:3", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 514, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7095:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7072:50:3" + }, + "returnParameters": { + "id": 519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 518, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 532, + "src": "7146:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 517, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7146:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7145:9:3" + }, + "scope": 533, + "src": "7060:162:3", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 534, + "src": "630:6594:3" + } + ], + "src": "33:7192:3" + }, + "id": 3 + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "exportedSymbols": { + "ERC1155": [ + 1541 + ] + }, + "id": 1542, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 535, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:4" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "file": "./IERC1155.sol", + "id": 536, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 1698, + "src": "66:24:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol", + "file": "./IERC1155MetadataURI.sol", + "id": 537, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 1713, + "src": "91:35:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", + "file": "./IERC1155Receiver.sol", + "id": 538, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 1754, + "src": "127:32:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 539, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 3287, + "src": "160:33:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 540, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 167, + "src": "194:40:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 541, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 534, + "src": "235:33:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 542, + "nodeType": "ImportDirective", + "scope": 1542, + "sourceUnit": 3264, + "src": "269:33:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 544, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3286, + "src": "542:7:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$3286", + "typeString": "contract Context" + } + }, + "id": 545, + "nodeType": "InheritanceSpecifier", + "src": "542:7:4" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 546, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 166, + "src": "551:6:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$166", + "typeString": "contract ERC165" + } + }, + "id": 547, + "nodeType": "InheritanceSpecifier", + "src": "551:6:4" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 548, + "name": "IERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1697, + "src": "559:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 549, + "nodeType": "InheritanceSpecifier", + "src": "559:8:4" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 550, + "name": "IERC1155MetadataURI", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1712, + "src": "569:19:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155MetadataURI_$1712", + "typeString": "contract IERC1155MetadataURI" + } + }, + "id": 551, + "nodeType": "InheritanceSpecifier", + "src": "569:19:4" + } + ], + "contractDependencies": [ + 166, + 178, + 1697, + 1712, + 3286 + ], + "contractKind": "contract", + "documentation": { + "id": 543, + "nodeType": "StructuredDocumentation", + "src": "304:217:4", + "text": " @dev Implementation of the basic standard multi-token.\n See https://eips.ethereum.org/EIPS/eip-1155\n Originally based on code by Enjin: https://github.com/enjin/erc-1155\n _Available since v3.1._" + }, + "fullyImplemented": true, + "id": 1541, + "linearizedBaseContracts": [ + 1541, + 1712, + 1697, + 166, + 178, + 3286 + ], + "name": "ERC1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 554, + "libraryName": { + "contractScope": null, + "id": 552, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 533, + "src": "601:8:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$533", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "595:27:4", + "typeName": { + "id": 553, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "614:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 557, + "libraryName": { + "contractScope": null, + "id": 555, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3263, + "src": "633:7:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "627:26:4", + "typeName": { + "id": 556, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "645:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "constant": false, + "id": 563, + "mutability": "mutable", + "name": "_balances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1541, + "src": "708:66:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + }, + "typeName": { + "id": 562, + "keyType": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "717:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "708:48:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + }, + "valueType": { + "id": 561, + "keyType": { + "id": 559, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "736:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "728:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 560, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "747:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 569, + "mutability": "mutable", + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1541, + "src": "831:72:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 568, + "keyType": { + "id": 564, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "840:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "831:45:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 567, + "keyType": { + "id": 565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "859:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "851:24:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 566, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "870:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 571, + "mutability": "mutable", + "name": "_uri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1541, + "src": "1024:19:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 570, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1024:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 574, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC1155", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1541, + "src": "1716:58:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 572, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1716:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30786439623637613236", + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1764:10:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_3652614694_by_1", + "typeString": "int_const 3652614694" + }, + "value": "0xd9b67a26" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 577, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC1155_METADATA_URI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1541, + "src": "1855:71:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 575, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1855:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783065383933343163", + "id": 576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1916:10:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_243872796_by_1", + "typeString": "int_const 243872796" + }, + "value": "0x0e89341c" + }, + "visibility": "private" + }, + { + "body": { + "id": 595, + "nodeType": "Block", + "src": "2016:314:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 584, + "name": "uri_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 580, + "src": "2034:4:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 583, + "name": "_setURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "2026:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory)" + } + }, + "id": 585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2026:13:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 586, + "nodeType": "ExpressionStatement", + "src": "2026:13:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 588, + "name": "_INTERFACE_ID_ERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 574, + "src": "2147:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 587, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2128:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2128:41:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 590, + "nodeType": "ExpressionStatement", + "src": "2128:41:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 592, + "name": "_INTERFACE_ID_ERC1155_METADATA_URI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 577, + "src": "2288:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 591, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2269:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 593, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2269:54:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 594, + "nodeType": "ExpressionStatement", + "src": "2269:54:4" + } + ] + }, + "documentation": { + "id": 578, + "nodeType": "StructuredDocumentation", + "src": "1933:38:4", + "text": " @dev See {_setURI}." + }, + "id": 596, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 581, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 580, + "mutability": "mutable", + "name": "uri_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 596, + "src": "1989:18:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 579, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1989:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1988:20:4" + }, + "returnParameters": { + "id": 582, + "nodeType": "ParameterList", + "parameters": [], + "src": "2016:0:4" + }, + "scope": 1541, + "src": "1976:354:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1711 + ], + "body": { + "id": 607, + "nodeType": "Block", + "src": "2806:28:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 605, + "name": "_uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 571, + "src": "2823:4:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 604, + "id": 606, + "nodeType": "Return", + "src": "2816:11:4" + } + ] + }, + "documentation": { + "id": 597, + "nodeType": "StructuredDocumentation", + "src": "2336:388:4", + "text": " @dev See {IERC1155MetadataURI-uri}.\n This implementation returns the same URI for *all* token types. It relies\n on the token type ID substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n Clients calling this function must replace the `\\{id\\}` substring with the\n actual token type ID." + }, + "functionSelector": "0e89341c", + "id": 608, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "uri", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 601, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "2773:8:4" + }, + "parameters": { + "id": 600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 599, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 608, + "src": "2742:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 598, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2742:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2741:9:4" + }, + "returnParameters": { + "id": 604, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 603, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 608, + "src": "2791:13:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 602, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "2791:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2790:15:4" + }, + "scope": 1541, + "src": "2729:105:4", + "stateMutability": "view", + "virtual": true, + "visibility": "external" + }, + { + "baseFunctions": [ + 1635 + ], + "body": { + "id": 635, + "nodeType": "Block", + "src": "3071:133:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 620, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "3089:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 623, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3108:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 622, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3100:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 621, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3100:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3100:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3089:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3112:45:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9", + "typeString": "literal_string \"ERC1155: balance query for the zero address\"" + }, + "value": "ERC1155: balance query for the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1f4de6a436172e7f7b1540476031cb037fc18ede9cc346a56da1697cbd352aa9", + "typeString": "literal_string \"ERC1155: balance query for the zero address\"" + } + ], + "id": 619, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3081:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 627, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3081:77:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 628, + "nodeType": "ExpressionStatement", + "src": "3081:77:4" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 629, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "3175:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 631, + "indexExpression": { + "argumentTypes": null, + "id": 630, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 613, + "src": "3185:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3175:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 633, + "indexExpression": { + "argumentTypes": null, + "id": 632, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 611, + "src": "3189:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3175:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 618, + "id": 634, + "nodeType": "Return", + "src": "3168:29:4" + } + ] + }, + "documentation": { + "id": 609, + "nodeType": "StructuredDocumentation", + "src": "2840:131:4", + "text": " @dev See {IERC1155-balanceOf}.\n Requirements:\n - `account` cannot be the zero address." + }, + "functionSelector": "00fdd58e", + "id": 636, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 615, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3044:8:4" + }, + "parameters": { + "id": 614, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 611, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 636, + "src": "2995:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 610, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2995:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 613, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 636, + "src": "3012:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 612, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3012:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2994:29:4" + }, + "returnParameters": { + "id": 618, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 617, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 636, + "src": "3062:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 616, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3062:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3061:9:4" + }, + "scope": 1541, + "src": "2976:228:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1648 + ], + "body": { + "id": 699, + "nodeType": "Block", + "src": "3556:335:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 651, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "3574:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3574:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 653, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "3593:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 654, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3593:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3574:29:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368", + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3605:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5", + "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\"" + }, + "value": "ERC1155: accounts and ids length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e155f5d69798c6205436a388a4f3a5fd42f54147b40f4d63a2c8071ff8a9fee5", + "typeString": "literal_string \"ERC1155: accounts and ids length mismatch\"" + } + ], + "id": 650, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3566:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 657, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3566:83:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 658, + "nodeType": "ExpressionStatement", + "src": "3566:83:4" + }, + { + "assignments": [ + 663 + ], + "declarations": [ + { + "constant": false, + "id": 663, + "mutability": "mutable", + "name": "batchBalances", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 699, + "src": "3660:30:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3660:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 662, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3660:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 670, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 667, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "3707:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3707:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "3693:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3697:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 665, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3697:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3693:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3660:63:4" + }, + { + "body": { + "id": 695, + "nodeType": "Block", + "src": "3780:74:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 682, + "name": "batchBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "3794:13:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 684, + "indexExpression": { + "argumentTypes": null, + "id": 683, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3808:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3794:16:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 686, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "3823:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 688, + "indexExpression": { + "argumentTypes": null, + "id": 687, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3832:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3823:11:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 689, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 643, + "src": "3836:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 691, + "indexExpression": { + "argumentTypes": null, + "id": 690, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3840:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3836:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 685, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 636, + "src": "3813:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (address,uint256) view returns (uint256)" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3813:30:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3794:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 694, + "nodeType": "ExpressionStatement", + "src": "3794:49:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 675, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3754:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 676, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 640, + "src": "3758:8:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 677, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3758:15:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3754:19:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 696, + "initializationExpression": { + "assignments": [ + 672 + ], + "declarations": [ + { + "constant": false, + "id": 672, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 696, + "src": "3739:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 671, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3739:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 674, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3751:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3739:13:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "3775:3:4", + "subExpression": { + "argumentTypes": null, + "id": 679, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 672, + "src": "3777:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 681, + "nodeType": "ExpressionStatement", + "src": "3775:3:4" + }, + "nodeType": "ForStatement", + "src": "3734:120:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 697, + "name": "batchBalances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 663, + "src": "3871:13:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 649, + "id": 698, + "nodeType": "Return", + "src": "3864:20:4" + } + ] + }, + "documentation": { + "id": 637, + "nodeType": "StructuredDocumentation", + "src": "3210:146:4", + "text": " @dev See {IERC1155-balanceOfBatch}.\n Requirements:\n - `accounts` and `ids` must have the same length." + }, + "functionSelector": "4e1273f4", + "id": 700, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 645, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3508:8:4" + }, + "parameters": { + "id": 644, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 640, + "mutability": "mutable", + "name": "accounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 700, + "src": "3394:25:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3394:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 639, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3394:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 643, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 700, + "src": "3429:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3429:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 642, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3429:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3384:71:4" + }, + "returnParameters": { + "id": 649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 648, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 700, + "src": "3534:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 646, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3534:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 647, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3534:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3533:18:4" + }, + "scope": 1541, + "src": "3361:530:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1656 + ], + "body": { + "id": 733, + "nodeType": "Block", + "src": "4043:222:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 710, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "4061:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4061:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 712, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 703, + "src": "4077:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4061:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66", + "id": 714, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4087:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2", + "typeString": "literal_string \"ERC1155: setting approval status for self\"" + }, + "value": "ERC1155: setting approval status for self" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_df9806c6dc743de602e49918a67b580590d69ab768bdb59f977c0a884a91a7c2", + "typeString": "literal_string \"ERC1155: setting approval status for self\"" + } + ], + "id": 709, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4053:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4053:78:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "4053:78:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 717, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "4142:18:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 721, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 718, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "4161:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4161:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4142:32:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 722, + "indexExpression": { + "argumentTypes": null, + "id": 720, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 703, + "src": "4175:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4142:42:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 723, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "4187:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4142:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 725, + "nodeType": "ExpressionStatement", + "src": "4142:53:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 727, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "4225:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 728, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4225:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 729, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 703, + "src": "4239:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 730, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 705, + "src": "4249:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 726, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "4210:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4210:48:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 732, + "nodeType": "EmitStatement", + "src": "4205:53:4" + } + ] + }, + "documentation": { + "id": 701, + "nodeType": "StructuredDocumentation", + "src": "3897:57:4", + "text": " @dev See {IERC1155-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 734, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 707, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4034:8:4" + }, + "parameters": { + "id": 706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 703, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 734, + "src": "3986:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 702, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3986:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 705, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 734, + "src": "4004:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 704, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4004:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3985:33:4" + }, + "returnParameters": { + "id": 708, + "nodeType": "ParameterList", + "parameters": [], + "src": "4043:0:4" + }, + "scope": 1541, + "src": "3959:306:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1666 + ], + "body": { + "id": 751, + "nodeType": "Block", + "src": "4437:61:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 745, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 569, + "src": "4454:18:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 747, + "indexExpression": { + "argumentTypes": null, + "id": 746, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 737, + "src": "4473:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4454:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 749, + "indexExpression": { + "argumentTypes": null, + "id": 748, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "4482:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4454:37:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 744, + "id": 750, + "nodeType": "Return", + "src": "4447:44:4" + } + ] + }, + "documentation": { + "id": 735, + "nodeType": "StructuredDocumentation", + "src": "4271:56:4", + "text": " @dev See {IERC1155-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 752, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 741, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4413:8:4" + }, + "parameters": { + "id": 740, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 737, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 752, + "src": "4358:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4358:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 739, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 752, + "src": "4375:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4375:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4357:35:4" + }, + "returnParameters": { + "id": 744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 743, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 752, + "src": "4431:4:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 742, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4431:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4430:6:4" + }, + "scope": 1541, + "src": "4332:166:4", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1680 + ], + "body": { + "id": 857, + "nodeType": "Block", + "src": "4762:700:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 768, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "4780:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4794:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4786:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 769, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4786:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4786:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4780:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4798:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + }, + "value": "ERC1155: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + } + ], + "id": 767, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4772:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4772:66:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 776, + "nodeType": "ExpressionStatement", + "src": "4772:66:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 778, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "4869:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 779, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "4877:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4877:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4869:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 783, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "4910:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 784, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "4916:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4916:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 782, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "4893:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4893:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4869:60:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4943:43:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + }, + "value": "ERC1155: caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_394ac917f53b95ee25db2a5da5874c5b1f0af95a4fdf34992ff8b19c458f239a", + "typeString": "literal_string \"ERC1155: caller is not owner nor approved\"" + } + ], + "id": 777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4848:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 789, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4848:148:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 790, + "nodeType": "ExpressionStatement", + "src": "4848:148:4" + }, + { + "assignments": [ + 792 + ], + "declarations": [ + { + "constant": false, + "id": 792, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 857, + "src": "5007:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5007:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 795, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 793, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "5026:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5026:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5007:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 797, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 792, + "src": "5070:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 798, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "5080:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 799, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "5086:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 801, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5108:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 800, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "5090:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 802, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5090:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 804, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5131:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 803, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "5113:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5113:25:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 806, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "5140:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 796, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "5049:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5049:96:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 808, + "nodeType": "ExpressionStatement", + "src": "5049:96:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 823, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 809, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "5156:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 812, + "indexExpression": { + "argumentTypes": null, + "id": 810, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5166:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5156:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 813, + "indexExpression": { + "argumentTypes": null, + "id": 811, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "5170:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5156:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 820, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5202:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572", + "id": 821, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5210:44:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + }, + "value": "ERC1155: insufficient balance for transfer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 814, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "5178:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 816, + "indexExpression": { + "argumentTypes": null, + "id": 815, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5188:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5178:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 818, + "indexExpression": { + "argumentTypes": null, + "id": 817, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "5192:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5178:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 484, + "src": "5178:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5178:77:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5156:99:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 824, + "nodeType": "ExpressionStatement", + "src": "5156:99:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 838, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 825, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "5265:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 828, + "indexExpression": { + "argumentTypes": null, + "id": 826, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5275:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5265:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 829, + "indexExpression": { + "argumentTypes": null, + "id": 827, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "5279:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5265:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 836, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5307:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 830, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "5285:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 832, + "indexExpression": { + "argumentTypes": null, + "id": 831, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5295:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5285:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 834, + "indexExpression": { + "argumentTypes": null, + "id": 833, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "5299:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5285:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "5285:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5285:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5265:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 839, + "nodeType": "ExpressionStatement", + "src": "5265:49:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 841, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 792, + "src": "5345:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 842, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "5355:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "5361:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5365:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5369:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 840, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "5330:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5330:46:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 847, + "nodeType": "EmitStatement", + "src": "5325:51:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 849, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 792, + "src": "5418:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 850, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 755, + "src": "5428:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 851, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 757, + "src": "5434:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 852, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 759, + "src": "5438:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 853, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 761, + "src": "5442:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 854, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 763, + "src": "5450:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 848, + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "5387:30:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,bytes memory)" + } + }, + "id": 855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5387:68:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 856, + "nodeType": "ExpressionStatement", + "src": "5387:68:4" + } + ] + }, + "documentation": { + "id": 753, + "nodeType": "StructuredDocumentation", + "src": "4504:56:4", + "text": " @dev See {IERC1155-safeTransferFrom}." + }, + "functionSelector": "f242432a", + "id": 858, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 765, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4749:8:4" + }, + "parameters": { + "id": 764, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 755, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 858, + "src": "4600:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4600:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 757, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 858, + "src": "4622:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 756, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4622:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 759, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 858, + "src": "4642:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 758, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4642:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 761, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 858, + "src": "4662:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 760, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4662:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 763, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 858, + "src": "4686:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 762, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4686:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4590:119:4" + }, + "returnParameters": { + "id": 766, + "nodeType": "ParameterList", + "parameters": [], + "src": "4762:0:4" + }, + "scope": 1541, + "src": "4565:897:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 1696 + ], + "body": { + "id": 995, + "nodeType": "Block", + "src": "5756:962:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 876, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "5774:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 877, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5774:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 878, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "5788:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5788:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5774:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 881, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5804:42:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 875, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5766:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 882, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5766:81:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 883, + "nodeType": "ExpressionStatement", + "src": "5766:81:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 885, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "5865:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 888, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5879:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 887, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5871:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 886, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5871:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 889, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5871:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5865:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 891, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5883:39:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + }, + "value": "ERC1155: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6faf1c67f278b07c6771dcf4c315a89c21c0eaed11d9ab3d51774da1cfef545d", + "typeString": "literal_string \"ERC1155: transfer to the zero address\"" + } + ], + "id": 884, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5857:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5857:66:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 893, + "nodeType": "ExpressionStatement", + "src": "5857:66:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 904, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 895, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "5954:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 896, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "5962:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5962:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5954:20:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 900, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "5995:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 901, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "6001:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 902, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6001:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 899, + "name": "isApprovedForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "5978:16:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 903, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5978:36:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5954:60:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 905, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6028:52:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686", + "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\"" + }, + "value": "ERC1155: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_70a41c66829f5508884cda9ef3d2f72551b34f23e4035be97941681123d2d686", + "typeString": "literal_string \"ERC1155: transfer caller is not owner nor approved\"" + } + ], + "id": 894, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5933:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 906, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5933:157:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 907, + "nodeType": "ExpressionStatement", + "src": "5933:157:4" + }, + { + "assignments": [ + 909 + ], + "declarations": [ + { + "constant": false, + "id": 909, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 995, + "src": "6101:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 908, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6101:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 912, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 910, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "6120:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 911, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6120:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6101:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 914, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "6164:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 915, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "6174:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 916, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "6180:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 917, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "6184:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 918, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "6189:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 919, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "6198:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 913, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "6143:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6143:60:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 921, + "nodeType": "ExpressionStatement", + "src": "6143:60:4" + }, + { + "body": { + "id": 976, + "nodeType": "Block", + "src": "6255:308:4", + "statements": [ + { + "assignments": [ + 934 + ], + "declarations": [ + { + "constant": false, + "id": 934, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "6269:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 933, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6269:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 938, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 935, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "6282:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 937, + "indexExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6286:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6282:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6269:19:4" + }, + { + "assignments": [ + 940 + ], + "declarations": [ + { + "constant": false, + "id": 940, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 976, + "src": "6302:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 939, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6302:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 944, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 941, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "6319:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 943, + "indexExpression": { + "argumentTypes": null, + "id": 942, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6327:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6319:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6302:27:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 959, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 945, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6344:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 948, + "indexExpression": { + "argumentTypes": null, + "id": 946, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "6354:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6344:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 949, + "indexExpression": { + "argumentTypes": null, + "id": 947, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "6358:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6344:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 956, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "6407:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572", + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6431:44:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + }, + "value": "ERC1155: insufficient balance for transfer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_8ac7e9556b567c1c94bb4daaa3c3a65be5ac686579615210cb910fb8cb8d65bf", + "typeString": "literal_string \"ERC1155: insufficient balance for transfer\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 950, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6366:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 952, + "indexExpression": { + "argumentTypes": null, + "id": 951, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "6376:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6366:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 954, + "indexExpression": { + "argumentTypes": null, + "id": 953, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "6380:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6366:19:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 484, + "src": "6366:23:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6366:123:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6344:145:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 960, + "nodeType": "ExpressionStatement", + "src": "6344:145:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 961, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6503:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 964, + "indexExpression": { + "argumentTypes": null, + "id": 962, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "6513:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6503:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 965, + "indexExpression": { + "argumentTypes": null, + "id": 963, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "6517:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6503:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 972, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 940, + "src": "6545:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 966, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "6523:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 968, + "indexExpression": { + "argumentTypes": null, + "id": 967, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 934, + "src": "6533:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6523:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 970, + "indexExpression": { + "argumentTypes": null, + "id": 969, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "6537:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6523:17:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 971, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "6523:21:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 973, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6523:29:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6503:49:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 975, + "nodeType": "ExpressionStatement", + "src": "6503:49:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 929, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 926, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6234:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 927, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "6238:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6238:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6234:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 977, + "initializationExpression": { + "assignments": [ + 923 + ], + "declarations": [ + { + "constant": false, + "id": 923, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 977, + "src": "6219:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 922, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6219:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 925, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6231:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "6219:13:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "6250:3:4", + "subExpression": { + "argumentTypes": null, + "id": 930, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 923, + "src": "6252:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 932, + "nodeType": "ExpressionStatement", + "src": "6250:3:4" + }, + "nodeType": "ForStatement", + "src": "6214:349:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 979, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "6592:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 980, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "6602:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 981, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "6608:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 982, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "6612:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 983, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "6617:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 978, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "6578:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6578:47:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 985, + "nodeType": "EmitStatement", + "src": "6573:52:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 987, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "6672:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 988, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 861, + "src": "6682:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 989, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 863, + "src": "6688:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 990, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 866, + "src": "6692:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 991, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 869, + "src": "6697:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 992, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 871, + "src": "6706:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 986, + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "6636:35:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6636:75:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 994, + "nodeType": "ExpressionStatement", + "src": "6636:75:4" + } + ] + }, + "documentation": { + "id": 859, + "nodeType": "StructuredDocumentation", + "src": "5468:61:4", + "text": " @dev See {IERC1155-safeBatchTransferFrom}." + }, + "functionSelector": "2eb2c2d6", + "id": 996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeBatchTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 873, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "5743:8:4" + }, + "parameters": { + "id": 872, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 861, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 996, + "src": "5574:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5574:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 863, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 996, + "src": "5596:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5596:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 866, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 996, + "src": "5616:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 864, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5616:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 865, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5616:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 869, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 996, + "src": "5646:24:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 867, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5646:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 868, + "length": null, + "nodeType": "ArrayTypeName", + "src": "5646:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 871, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 996, + "src": "5680:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 870, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5680:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5564:139:4" + }, + "returnParameters": { + "id": 874, + "nodeType": "ParameterList", + "parameters": [], + "src": "5756:0:4" + }, + "scope": 1541, + "src": "5534:1184:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 1006, + "nodeType": "Block", + "src": "7597:30:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1002, + "name": "_uri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 571, + "src": "7607:4:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1003, + "name": "newuri", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 999, + "src": "7614:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "7607:13:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1005, + "nodeType": "ExpressionStatement", + "src": "7607:13:4" + } + ] + }, + "documentation": { + "id": 997, + "nodeType": "StructuredDocumentation", + "src": "6724:812:4", + "text": " @dev Sets a new URI for all token types, by relying on the token type ID\n substitution mechanism\n https://eips.ethereum.org/EIPS/eip-1155#metadata[defined in the EIP].\n By this mechanism, any occurrence of the `\\{id\\}` substring in either the\n URI or any of the amounts in the JSON file at said URI will be replaced by\n clients with the token type ID.\n For example, the `https://token-cdn-domain/\\{id\\}.json` URI would be\n interpreted by clients as\n `https://token-cdn-domain/000000000000000000000000000000000000000000000000000000000004cce0.json`\n for token type ID 0x4cce0.\n See {uri}.\n Because these URIs cannot be meaningfully represented by the {URI} event,\n this function emits no events." + }, + "id": 1007, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 999, + "mutability": "mutable", + "name": "newuri", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1007, + "src": "7558:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 998, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7558:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7557:22:4" + }, + "returnParameters": { + "id": 1001, + "nodeType": "ParameterList", + "parameters": [], + "src": "7597:0:4" + }, + "scope": 1541, + "src": "7541:86:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1088, + "nodeType": "Block", + "src": "8111:476:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1025, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1020, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8129:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1023, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8148:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1022, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8140:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1021, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8140:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1024, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8140:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "8129:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373", + "id": 1026, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8152:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + }, + "value": "ERC1155: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + } + ], + "id": 1019, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8121:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1027, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8121:67:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1028, + "nodeType": "ExpressionStatement", + "src": "8121:67:4" + }, + { + "assignments": [ + 1030 + ], + "declarations": [ + { + "constant": false, + "id": 1030, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1088, + "src": "8199:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1029, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8199:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1033, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1031, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "8218:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8218:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8199:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1035, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1030, + "src": "8262:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8280:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8272:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1036, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8272:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1039, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8272:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1040, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8284:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1042, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "8311:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1041, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "8293:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 1043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8293:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1045, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "8334:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1044, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "8316:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 1046, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8316:25:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1047, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "8343:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1034, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "8241:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 1048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8241:107:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1049, + "nodeType": "ExpressionStatement", + "src": "8241:107:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1050, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "8359:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1053, + "indexExpression": { + "argumentTypes": null, + "id": 1051, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "8369:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8359:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1054, + "indexExpression": { + "argumentTypes": null, + "id": 1052, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8373:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8359:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1061, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "8411:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1055, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "8384:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1057, + "indexExpression": { + "argumentTypes": null, + "id": 1056, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "8394:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8384:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1059, + "indexExpression": { + "argumentTypes": null, + "id": 1058, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8398:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8384:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "8384:26:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8384:34:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "8359:59:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1064, + "nodeType": "ExpressionStatement", + "src": "8359:59:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1066, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1030, + "src": "8448:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1069, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8466:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1068, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8458:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1067, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8458:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8458:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1071, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8470:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1072, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "8479:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1073, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "8483:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1065, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "8433:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 1074, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8433:57:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1075, + "nodeType": "EmitStatement", + "src": "8428:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1077, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1030, + "src": "8532:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1080, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8550:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8542:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8542:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1081, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8542:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1082, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1010, + "src": "8554:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1083, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "8563:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1084, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1014, + "src": "8567:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1085, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1016, + "src": "8575:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1076, + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "8501:30:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256,bytes memory)" + } + }, + "id": 1086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8501:79:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1087, + "nodeType": "ExpressionStatement", + "src": "8501:79:4" + } + ] + }, + "documentation": { + "id": 1008, + "nodeType": "StructuredDocumentation", + "src": "7633:377:4", + "text": " @dev Creates `amount` tokens of token type `id`, and assigns them to `account`.\n Emits a {TransferSingle} event.\n Requirements:\n - `account` cannot be the zero address.\n - If `account` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value." + }, + "id": 1089, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1017, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1010, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "8030:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1009, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8030:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1012, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "8047:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1011, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8047:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1014, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "8059:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8059:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1016, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1089, + "src": "8075:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1015, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8075:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8029:64:4" + }, + "returnParameters": { + "id": 1018, + "nodeType": "ParameterList", + "parameters": [], + "src": "8111:0:4" + }, + "scope": 1541, + "src": "8015:572:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1196, + "nodeType": "Block", + "src": "9048:584:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1109, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1104, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9066:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9080:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9072:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9072:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1108, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9072:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9066:16:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206d696e7420746f20746865207a65726f2061646472657373", + "id": 1110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9084:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + }, + "value": "ERC1155: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ebf031a1b7ee1d0b3a7752b450a3268e8b6c334561b48c1c0ba0f5bac05749f2", + "typeString": "literal_string \"ERC1155: mint to the zero address\"" + } + ], + "id": 1103, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9058:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9058:62:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1112, + "nodeType": "ExpressionStatement", + "src": "9058:62:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1114, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9138:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9138:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1116, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9152:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9152:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9138:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9168:42:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 1113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9130:81:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1121, + "nodeType": "ExpressionStatement", + "src": "9130:81:4" + }, + { + "assignments": [ + 1123 + ], + "declarations": [ + { + "constant": false, + "id": 1123, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1196, + "src": "9222:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1122, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9222:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1126, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1124, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "9241:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9241:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9222:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1128, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "9285:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9303:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1130, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9295:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1129, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9295:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9295:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1133, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9307:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1134, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9311:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1135, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9316:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1136, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "9325:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1127, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "9264:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 1137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9264:66:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1138, + "nodeType": "ExpressionStatement", + "src": "9264:66:4" + }, + { + "body": { + "id": 1171, + "nodeType": "Block", + "src": "9379:86:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1150, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "9393:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1155, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1151, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9403:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1153, + "indexExpression": { + "argumentTypes": null, + "id": 1152, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "9407:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9403:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9393:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1156, + "indexExpression": { + "argumentTypes": null, + "id": 1154, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9411:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "9393:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1161, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "9432:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1165, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1162, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9442:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1164, + "indexExpression": { + "argumentTypes": null, + "id": 1163, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "9446:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9442:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9432:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1167, + "indexExpression": { + "argumentTypes": null, + "id": 1166, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9450:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9432:21:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1157, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9417:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1159, + "indexExpression": { + "argumentTypes": null, + "id": 1158, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "9425:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9417:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 360, + "src": "9417:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9417:37:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9393:61:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1170, + "nodeType": "ExpressionStatement", + "src": "9393:61:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1143, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "9358:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1144, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9362:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9362:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9358:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1172, + "initializationExpression": { + "assignments": [ + 1140 + ], + "declarations": [ + { + "constant": false, + "id": 1140, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1172, + "src": "9346:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1139, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "9346:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1142, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9355:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9346:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9374:3:4", + "subExpression": { + "argumentTypes": null, + "id": 1147, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1140, + "src": "9374:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1149, + "nodeType": "ExpressionStatement", + "src": "9374:3:4" + }, + "nodeType": "ForStatement", + "src": "9341:124:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1174, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "9494:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9512:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9504:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1175, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9504:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9504:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1179, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9516:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1180, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9520:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1181, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9525:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 1173, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "9480:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 1182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9480:53:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1183, + "nodeType": "EmitStatement", + "src": "9475:58:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1185, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "9580:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9598:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1187, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9590:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1186, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9590:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9590:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1190, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1092, + "src": "9602:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1191, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "9606:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1192, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "9611:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1193, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "9620:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1184, + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1512, + "src": "9544:35:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 1194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9544:81:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1195, + "nodeType": "ExpressionStatement", + "src": "9544:81:4" + } + ] + }, + "documentation": { + "id": 1090, + "nodeType": "StructuredDocumentation", + "src": "8593:334:4", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_mint}.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value." + }, + "id": 1197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mintBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1092, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1197, + "src": "8952:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1091, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8952:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1095, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1197, + "src": "8964:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8964:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1094, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8964:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1098, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1197, + "src": "8986:24:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1096, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8986:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1097, + "length": null, + "nodeType": "ArrayTypeName", + "src": "8986:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1100, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1197, + "src": "9012:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1099, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9012:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8951:79:4" + }, + "returnParameters": { + "id": 1102, + "nodeType": "ParameterList", + "parameters": [], + "src": "9048:0:4" + }, + "scope": 1541, + "src": "8932:700:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1265, + "nodeType": "Block", + "src": "9958:461:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1208, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "9976:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9995:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9987:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1209, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9987:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1212, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9987:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "9976:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 1214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9999:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + }, + "value": "ERC1155: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + } + ], + "id": 1207, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9968:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9968:69:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1216, + "nodeType": "ExpressionStatement", + "src": "9968:69:4" + }, + { + "assignments": [ + 1218 + ], + "declarations": [ + { + "constant": false, + "id": 1218, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1265, + "src": "10048:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1217, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10048:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1221, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1219, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "10067:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10067:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10048:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1223, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1218, + "src": "10111:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1224, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "10121:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10138:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10130:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10130:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1228, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10130:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1230, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1202, + "src": "10160:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1229, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "10142:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 1231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10142:21:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1233, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "10183:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1232, + "name": "_asSingletonArray", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1540, + "src": "10165:17:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + } + }, + "id": 1234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10165:25:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1235, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10192:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1222, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "10090:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 1236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10090:105:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1237, + "nodeType": "ExpressionStatement", + "src": "10090:105:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1238, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "10206:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1241, + "indexExpression": { + "argumentTypes": null, + "id": 1239, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1202, + "src": "10216:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10206:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1242, + "indexExpression": { + "argumentTypes": null, + "id": 1240, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "10220:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10206:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1249, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "10271:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10291:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + }, + "value": "ERC1155: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1243, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "10231:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1245, + "indexExpression": { + "argumentTypes": null, + "id": 1244, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1202, + "src": "10241:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10231:13:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1247, + "indexExpression": { + "argumentTypes": null, + "id": 1246, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "10245:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10231:22:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 484, + "src": "10231:26:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10231:108:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10206:133:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1253, + "nodeType": "ExpressionStatement", + "src": "10206:133:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1218, + "src": "10370:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1256, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1200, + "src": "10380:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10397:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10389:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1257, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10389:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10389:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1261, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1202, + "src": "10401:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1262, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1204, + "src": "10405:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1254, + "name": "TransferSingle", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1594, + "src": "10355:14:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256,uint256)" + } + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10355:57:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1264, + "nodeType": "EmitStatement", + "src": "10350:62:4" + } + ] + }, + "documentation": { + "id": 1198, + "nodeType": "StructuredDocumentation", + "src": "9638:238:4", + "text": " @dev Destroys `amount` tokens of token type `id` from `account`\n Requirements:\n - `account` cannot be the zero address.\n - `account` must have at least `amount` tokens of token type `id`." + }, + "id": 1266, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1200, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1266, + "src": "9896:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9896:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1202, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1266, + "src": "9913:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9913:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1204, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1266, + "src": "9925:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1203, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9925:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9895:45:4" + }, + "returnParameters": { + "id": 1206, + "nodeType": "ParameterList", + "parameters": [], + "src": "9958:0:4" + }, + "scope": 1541, + "src": "9881:538:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1360, + "nodeType": "Block", + "src": "10715:603:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1279, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1269, + "src": "10733:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1282, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10752:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10744:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1280, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10744:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10744:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "10733:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e2066726f6d20746865207a65726f2061646472657373", + "id": 1285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10756:37:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + }, + "value": "ERC1155: burn from the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_87fd4aee52f5758d127cd9704d5ffef70f36ed1e87eb99b6f40e37a25c79a76a", + "typeString": "literal_string \"ERC1155: burn from the zero address\"" + } + ], + "id": 1278, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10725:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10725:69:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1287, + "nodeType": "ExpressionStatement", + "src": "10725:69:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1289, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "10812:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10812:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1291, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "10826:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1292, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10826:14:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10812:28:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368", + "id": 1294, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10842:42:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + }, + "value": "ERC1155: ids and amounts length mismatch" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e909e0c9a8f96b4f9af03b716811ece20beb070be416893ed1d50619b5930807", + "typeString": "literal_string \"ERC1155: ids and amounts length mismatch\"" + } + ], + "id": 1288, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10804:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10804:81:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1296, + "nodeType": "ExpressionStatement", + "src": "10804:81:4" + }, + { + "assignments": [ + 1298 + ], + "declarations": [ + { + "constant": false, + "id": 1298, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1360, + "src": "10896:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1297, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10896:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1301, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1299, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "10915:10:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 1300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10915:12:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10896:31:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1303, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1298, + "src": "10959:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1304, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1269, + "src": "10969:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10986:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1306, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "10978:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1305, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10978:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10978:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1309, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "10990:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1310, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "10995:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1311, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11004:2:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 1302, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1380, + "src": "10938:20:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10938:69:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1313, + "nodeType": "ExpressionStatement", + "src": "10938:69:4" + }, + { + "body": { + "id": 1347, + "nodeType": "Block", + "src": "11056:182:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1325, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "11070:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1330, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1326, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "11080:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1328, + "indexExpression": { + "argumentTypes": null, + "id": 1327, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "11084:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11080:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11070:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1331, + "indexExpression": { + "argumentTypes": null, + "id": 1329, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1269, + "src": "11088:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "11070:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1340, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "11147:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1342, + "indexExpression": { + "argumentTypes": null, + "id": 1341, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "11155:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11147:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "455243313135353a206275726e20616d6f756e7420657863656564732062616c616e6365", + "id": 1343, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11175:38:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + }, + "value": "ERC1155: burn amount exceeds balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_294a5de01910e2350ff231c633ae2d453ed6b1b72c75506234b7aace63eae685", + "typeString": "literal_string \"ERC1155: burn amount exceeds balance\"" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1332, + "name": "_balances", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 563, + "src": "11099:9:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 1336, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1333, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "11109:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1335, + "indexExpression": { + "argumentTypes": null, + "id": 1334, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "11113:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11109:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11099:17:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 1338, + "indexExpression": { + "argumentTypes": null, + "id": 1337, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1269, + "src": "11117:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11099:26:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 484, + "src": "11099:30:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256,string memory) pure returns (uint256)" + } + }, + "id": 1344, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11099:128:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11070:157:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1346, + "nodeType": "ExpressionStatement", + "src": "11070:157:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1318, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "11035:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1319, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "11039:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11039:10:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "11035:14:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1348, + "initializationExpression": { + "assignments": [ + 1315 + ], + "declarations": [ + { + "constant": false, + "id": 1315, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1348, + "src": "11023:6:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1314, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "11023:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1317, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11032:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "11023:10:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "11051:3:4", + "subExpression": { + "argumentTypes": null, + "id": 1322, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1315, + "src": "11051:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1324, + "nodeType": "ExpressionStatement", + "src": "11051:3:4" + }, + "nodeType": "ForStatement", + "src": "11018:220:4" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1350, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1298, + "src": "11267:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1351, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1269, + "src": "11277:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11294:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11286:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1352, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11286:7:4", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1355, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11286:10:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 1356, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1272, + "src": "11298:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1357, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "11303:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 1349, + "name": "TransferBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1609, + "src": "11253:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address,address,address,uint256[] memory,uint256[] memory)" + } + }, + "id": 1358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11253:58:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1359, + "nodeType": "EmitStatement", + "src": "11248:63:4" + } + ] + }, + "documentation": { + "id": 1267, + "nodeType": "StructuredDocumentation", + "src": "10425:183:4", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {_burn}.\n Requirements:\n - `ids` and `amounts` must have the same length." + }, + "id": 1361, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burnBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1276, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1269, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1361, + "src": "10633:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1268, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10633:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1272, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1361, + "src": "10650:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1270, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10650:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1271, + "length": null, + "nodeType": "ArrayTypeName", + "src": "10650:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1275, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1361, + "src": "10672:24:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1273, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10672:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1274, + "length": null, + "nodeType": "ArrayTypeName", + "src": "10672:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10632:65:4" + }, + "returnParameters": { + "id": 1277, + "nodeType": "ParameterList", + "parameters": [], + "src": "10715:0:4" + }, + "scope": 1541, + "src": "10613:705:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1379, + "nodeType": "Block", + "src": "12484:3:4", + "statements": [] + }, + "documentation": { + "id": 1362, + "nodeType": "StructuredDocumentation", + "src": "11324:923:4", + "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning, as well as batched variants.\n The same hook is called on both single and batched variants. For single\n transfers, the length of the `id` and `amount` arrays will be 1.\n Calling conditions (for each `id` and `amount` pair):\n - When `from` and `to` are both non-zero, `amount` of ``from``'s tokens\n of token type `id` will be transferred to `to`.\n - When `from` is zero, `amount` tokens of token type `id` will be minted\n for `to`.\n - when `to` is zero, `amount` of ``from``'s tokens of token type `id`\n will be burned.\n - `from` and `to` are never both zero.\n - `ids` and `amounts` have the same, non-zero length.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 1380, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1377, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1364, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12291:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1363, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12291:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1366, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12317:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12317:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1368, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12339:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1367, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12339:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1371, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12359:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1369, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12359:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1370, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12359:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1374, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12389:24:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1372, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12389:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1373, + "length": null, + "nodeType": "ArrayTypeName", + "src": "12389:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1376, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1380, + "src": "12423:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1375, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12423:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12281:165:4" + }, + "returnParameters": { + "id": 1378, + "nodeType": "ParameterList", + "parameters": [], + "src": "12484:0:4" + }, + "scope": 1541, + "src": "12252:235:4", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 1444, + "nodeType": "Block", + "src": "12698:536:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1395, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "12712:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "12712:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12712:15:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1443, + "nodeType": "IfStatement", + "src": "12708:520:4", + "trueBody": { + "id": 1442, + "nodeType": "Block", + "src": "12729:499:4", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 1424, + "nodeType": "Block", + "src": "12846:188:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1411, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1409, + "src": "12868:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1413, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "12897:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1412, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1753, + "src": "12880:16:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1753_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12880:20:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$1753", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 1415, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 1734, + "src": "12880:38:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 1416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "12880:47:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "12868:59:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1423, + "nodeType": "IfStatement", + "src": "12864:156:4", + "trueBody": { + "id": 1422, + "nodeType": "Block", + "src": "12929:91:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73", + "id": 1419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12958:42:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + }, + "value": "ERC1155: ERC1155Receiver rejected tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + } + ], + "id": 1418, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "12951:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1420, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12951:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1421, + "nodeType": "ExpressionStatement", + "src": "12951:50:4" + } + ] + } + } + ] + }, + "errorName": "", + "id": 1425, + "nodeType": "TryCatchClause", + "parameters": { + "id": 1410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1409, + "mutability": "mutable", + "name": "response", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1425, + "src": "12829:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1408, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "12829:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12828:17:4" + }, + "src": "12820:214:4" + }, + { + "block": { + "id": 1433, + "nodeType": "Block", + "src": "13069:47:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1430, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1427, + "src": "13094:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1429, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13087:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13087:14:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1432, + "nodeType": "ExpressionStatement", + "src": "13087:14:4" + } + ] + }, + "errorName": "Error", + "id": 1434, + "nodeType": "TryCatchClause", + "parameters": { + "id": 1428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1427, + "mutability": "mutable", + "name": "reason", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1434, + "src": "13047:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1426, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13047:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13046:22:4" + }, + "src": "13035:81:4" + }, + { + "block": { + "id": 1439, + "nodeType": "Block", + "src": "13123:95:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572", + "id": 1436, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13148:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + }, + "value": "ERC1155: transfer to non ERC1155Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + } + ], + "id": 1435, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13141:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1437, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13141:62:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1438, + "nodeType": "ExpressionStatement", + "src": "13141:62:4" + } + ] + }, + "errorName": "", + "id": 1440, + "nodeType": "TryCatchClause", + "parameters": null, + "src": "13117:101:4" + } + ], + "externalCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1402, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1382, + "src": "12786:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1403, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1384, + "src": "12796:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1404, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1388, + "src": "12802:2:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1405, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1390, + "src": "12806:6:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1406, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1392, + "src": "12814:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1399, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1386, + "src": "12764:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1398, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1753, + "src": "12747:16:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1753_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12747:20:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$1753", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 1734, + "src": "12747:38:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 1407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12747:72:4", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 1441, + "nodeType": "TryStatement", + "src": "12743:475:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1445, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_doSafeTransferAcceptanceCheck", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1382, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12542:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1381, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12542:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1384, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12568:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1383, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12568:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1386, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12590:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1385, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12590:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1388, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12610:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1387, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12610:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1390, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12630:14:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1389, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12630:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1392, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1445, + "src": "12654:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1391, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12654:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12532:145:4" + }, + "returnParameters": { + "id": 1394, + "nodeType": "ParameterList", + "parameters": [], + "src": "12698:0:4" + }, + "scope": 1541, + "src": "12493:741:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1511, + "nodeType": "Block", + "src": "13470:548:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 1462, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "13484:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "13484:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 1464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13484:15:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1510, + "nodeType": "IfStatement", + "src": "13480:532:4", + "trueBody": { + "id": 1509, + "nodeType": "Block", + "src": "13501:511:4", + "statements": [ + { + "clauses": [ + { + "block": { + "id": 1491, + "nodeType": "Block", + "src": "13625:193:4", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1478, + "name": "response", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1476, + "src": "13647:8:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1480, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "13676:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1479, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1753, + "src": "13659:16:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1753_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 1481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13659:20:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$1753", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 1482, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 1752, + "src": "13659:43:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 1483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13659:52:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "13647:64:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1490, + "nodeType": "IfStatement", + "src": "13643:161:4", + "trueBody": { + "id": 1489, + "nodeType": "Block", + "src": "13713:91:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73", + "id": 1486, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13742:42:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + }, + "value": "ERC1155: ERC1155Receiver rejected tokens" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_0587cccad73a80a7f013db13c596f4febc1968dc77e1d3589d5e7a509a3d6503", + "typeString": "literal_string \"ERC1155: ERC1155Receiver rejected tokens\"" + } + ], + "id": 1485, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13735:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1487, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13735:50:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1488, + "nodeType": "ExpressionStatement", + "src": "13735:50:4" + } + ] + } + } + ] + }, + "errorName": "", + "id": 1492, + "nodeType": "TryCatchClause", + "parameters": { + "id": 1477, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1476, + "mutability": "mutable", + "name": "response", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1492, + "src": "13608:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1475, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "13608:6:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13607:17:4" + }, + "src": "13599:219:4" + }, + { + "block": { + "id": 1500, + "nodeType": "Block", + "src": "13853:47:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1497, + "name": "reason", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1494, + "src": "13878:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 1496, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13871:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13871:14:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1499, + "nodeType": "ExpressionStatement", + "src": "13871:14:4" + } + ] + }, + "errorName": "Error", + "id": 1501, + "nodeType": "TryCatchClause", + "parameters": { + "id": 1495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1494, + "mutability": "mutable", + "name": "reason", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1501, + "src": "13831:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1493, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "13831:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13830:22:4" + }, + "src": "13819:81:4" + }, + { + "block": { + "id": 1506, + "nodeType": "Block", + "src": "13907:95:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572", + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13932:54:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + }, + "value": "ERC1155: transfer to non ERC1155Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_00aa752fb1526000e5241602affc3d70ef506da48a27ea57140102b439e655ed", + "typeString": "literal_string \"ERC1155: transfer to non ERC1155Receiver implementer\"" + } + ], + "id": 1502, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "13925:6:4", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13925:62:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1505, + "nodeType": "ExpressionStatement", + "src": "13925:62:4" + } + ] + }, + "errorName": "", + "id": 1507, + "nodeType": "TryCatchClause", + "parameters": null, + "src": "13901:101:4" + } + ], + "externalCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1469, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "13563:8:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1470, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1449, + "src": "13573:4:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1471, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1454, + "src": "13579:3:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1472, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1457, + "src": "13584:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 1473, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1459, + "src": "13593:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1466, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "13536:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1465, + "name": "IERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1753, + "src": "13519:16:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155Receiver_$1753_$", + "typeString": "type(contract IERC1155Receiver)" + } + }, + "id": 1467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13519:20:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$1753", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 1468, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 1752, + "src": "13519:43:4", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13519:79:4", + "tryCall": true, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "id": 1508, + "nodeType": "TryStatement", + "src": "13515:487:4" + } + ] + } + } + ] + }, + "documentation": null, + "id": 1512, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_doSafeBatchTransferAcceptanceCheck", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1460, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1447, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13294:16:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1446, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13294:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1449, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13320:12:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13320:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1451, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13342:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13342:7:4", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1454, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13362:20:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13362:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1453, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13362:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1457, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13392:24:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1455, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13392:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1456, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13392:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1459, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1512, + "src": "13426:17:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1458, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13426:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13284:165:4" + }, + "returnParameters": { + "id": 1461, + "nodeType": "ParameterList", + "parameters": [], + "src": "13470:0:4" + }, + "scope": 1541, + "src": "13240:778:4", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 1539, + "nodeType": "Block", + "src": "14108:109:4", + "statements": [ + { + "assignments": [ + 1524 + ], + "declarations": [ + { + "constant": false, + "id": 1524, + "mutability": "mutable", + "name": "array", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1539, + "src": "14118:22:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1522, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14118:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1523, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14118:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1530, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14157:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + } + ], + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14143:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$", + "typeString": "function (uint256) pure returns (uint256[] memory)" + }, + "typeName": { + "baseType": { + "id": 1525, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14147:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14147:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + } + }, + "id": 1529, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14143:16:4", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14118:41:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1531, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1524, + "src": "14169:5:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1533, + "indexExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14175:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14169:8:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1534, + "name": "element", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1514, + "src": "14180:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14169:18:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1536, + "nodeType": "ExpressionStatement", + "src": "14169:18:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 1537, + "name": "array", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1524, + "src": "14205:5:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "functionReturnParameters": 1519, + "id": 1538, + "nodeType": "Return", + "src": "14198:12:4" + } + ] + }, + "documentation": null, + "id": 1540, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_asSingletonArray", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1515, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1514, + "mutability": "mutable", + "name": "element", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1540, + "src": "14051:15:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14051:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14050:17:4" + }, + "returnParameters": { + "id": 1519, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1518, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1540, + "src": "14090:16:4", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1516, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14090:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1517, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14090:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14089:18:4" + }, + "scope": 1541, + "src": "14024:193:4", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 1542, + "src": "522:13697:4" + } + ], + "src": "33:14187:4" + }, + "id": 4 + }, + "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "exportedSymbols": { + "ERC1155Receiver": [ + 1575 + ] + }, + "id": 1576, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1543, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:5" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", + "file": "./IERC1155Receiver.sol", + "id": 1544, + "nodeType": "ImportDirective", + "scope": 1576, + "sourceUnit": 1754, + "src": "66:32:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 1545, + "nodeType": "ImportDirective", + "scope": 1576, + "sourceUnit": 167, + "src": "99:40:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": true, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1547, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 166, + "src": "218:6:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$166", + "typeString": "contract ERC165" + } + }, + "id": 1548, + "nodeType": "InheritanceSpecifier", + "src": "218:6:5" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1549, + "name": "IERC1155Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1753, + "src": "226:16:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155Receiver_$1753", + "typeString": "contract IERC1155Receiver" + } + }, + "id": 1550, + "nodeType": "InheritanceSpecifier", + "src": "226:16:5" + } + ], + "contractDependencies": [ + 166, + 178, + 1753 + ], + "contractKind": "contract", + "documentation": { + "id": 1546, + "nodeType": "StructuredDocumentation", + "src": "141:39:5", + "text": " @dev _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 1575, + "linearizedBaseContracts": [ + 1575, + 1753, + 166, + 178 + ], + "name": "ERC1155Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1573, + "nodeType": "Block", + "src": "272:187:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1557, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "338:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "330:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "330:7:5", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1558, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "330:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1554, + "name": "ERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "314:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155Receiver_$1575_$", + "typeString": "type(contract ERC1155Receiver)" + } + }, + "id": 1559, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "314:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$1575", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 1560, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 1734, + "src": "314:45:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 1561, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "314:54:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "^", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1565, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "407:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "399:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1563, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "399:7:5", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1566, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "399:10:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 1562, + "name": "ERC1155Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "383:15:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC1155Receiver_$1575_$", + "typeString": "type(contract ERC1155Receiver)" + } + }, + "id": 1567, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "383:27:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$1575", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 1752, + "src": "383:50:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 1569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "383:59:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "314:128:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1553, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "282:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 1571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "282:170:5", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1572, + "nodeType": "ExpressionStatement", + "src": "282:170:5" + } + ] + }, + "documentation": null, + "id": 1574, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1551, + "nodeType": "ParameterList", + "parameters": [], + "src": "260:2:5" + }, + "returnParameters": { + "id": 1552, + "nodeType": "ParameterList", + "parameters": [], + "src": "272:0:5" + }, + "scope": 1575, + "src": "249:210:5", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 1576, + "src": "181:280:5" + } + ], + "src": "33:429:5" + }, + "id": 5 + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "exportedSymbols": { + "IERC1155": [ + 1697 + ] + }, + "id": 1698, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1577, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:6" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 1578, + "nodeType": "ImportDirective", + "scope": 1698, + "sourceUnit": 179, + "src": "66:41:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1580, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 178, + "src": "297:7:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$178", + "typeString": "contract IERC165" + } + }, + "id": 1581, + "nodeType": "InheritanceSpecifier", + "src": "297:7:6" + } + ], + "contractDependencies": [ + 178 + ], + "contractKind": "interface", + "documentation": { + "id": 1579, + "nodeType": "StructuredDocumentation", + "src": "109:165:6", + "text": " @dev Required interface of an ERC1155 compliant contract, as defined in the\n https://eips.ethereum.org/EIPS/eip-1155[EIP].\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 1697, + "linearizedBaseContracts": [ + 1697, + 178 + ], + "name": "IERC1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 1582, + "nodeType": "StructuredDocumentation", + "src": "311:121:6", + "text": " @dev Emitted when `value` tokens of token type `id` are transferred from `from` to `to` by `operator`." + }, + "id": 1594, + "name": "TransferSingle", + "nodeType": "EventDefinition", + "parameters": { + "id": 1593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1584, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1594, + "src": "458:24:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1583, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "458:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1586, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1594, + "src": "484:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1585, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "484:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1588, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1594, + "src": "506:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1587, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "506:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1590, + "indexed": false, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1594, + "src": "526:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1589, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "526:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1592, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1594, + "src": "538:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1591, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "538:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "457:95:6" + }, + "src": "437:116:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1595, + "nodeType": "StructuredDocumentation", + "src": "559:144:6", + "text": " @dev Equivalent to multiple {TransferSingle} events, where `operator`, `from` and `to` are the same for all\n transfers." + }, + "id": 1609, + "name": "TransferBatch", + "nodeType": "EventDefinition", + "parameters": { + "id": 1608, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1597, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1609, + "src": "728:24:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1596, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "728:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1599, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1609, + "src": "754:20:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "754:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1601, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1609, + "src": "776:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1600, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "776:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1604, + "indexed": false, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1609, + "src": "796:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1602, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "796:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1603, + "length": null, + "nodeType": "ArrayTypeName", + "src": "796:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1607, + "indexed": false, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1609, + "src": "811:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1605, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "811:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1606, + "length": null, + "nodeType": "ArrayTypeName", + "src": "811:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "727:101:6" + }, + "src": "708:121:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1610, + "nodeType": "StructuredDocumentation", + "src": "835:147:6", + "text": " @dev Emitted when `account` grants or revokes permission to `operator` to transfer their tokens, according to\n `approved`." + }, + "id": 1618, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 1617, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1612, + "indexed": true, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1618, + "src": "1008:23:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1611, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1008:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1614, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1618, + "src": "1033:24:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1613, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1033:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1616, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1618, + "src": "1059:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1615, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1059:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1007:66:6" + }, + "src": "987:87:6" + }, + { + "anonymous": false, + "documentation": { + "id": 1619, + "nodeType": "StructuredDocumentation", + "src": "1080:343:6", + "text": " @dev Emitted when the URI for token type `id` changes to `value`, if it is a non-programmatic URI.\n If an {URI} event was emitted for `id`, the standard\n https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[guarantees] that `value` will equal the value\n returned by {IERC1155MetadataURI-uri}." + }, + "id": 1625, + "name": "URI", + "nodeType": "EventDefinition", + "parameters": { + "id": 1624, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1621, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1625, + "src": "1438:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1620, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1438:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1623, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1625, + "src": "1452:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1437:34:6" + }, + "src": "1428:44:6" + }, + { + "body": null, + "documentation": { + "id": 1626, + "nodeType": "StructuredDocumentation", + "src": "1478:173:6", + "text": " @dev Returns the amount of tokens of token type `id` owned by `account`.\n Requirements:\n - `account` cannot be the zero address." + }, + "functionSelector": "00fdd58e", + "id": 1635, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1635, + "src": "1675:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1627, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1675:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1630, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1635, + "src": "1692:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1629, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1692:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1674:29:6" + }, + "returnParameters": { + "id": 1634, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1633, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1635, + "src": "1727:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1632, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1727:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1726:9:6" + }, + "scope": 1697, + "src": "1656:80:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1636, + "nodeType": "StructuredDocumentation", + "src": "1742:188:6", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {balanceOf}.\n Requirements:\n - `accounts` and `ids` must have the same length." + }, + "functionSelector": "4e1273f4", + "id": 1648, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOfBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1643, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1639, + "mutability": "mutable", + "name": "accounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1648, + "src": "1959:27:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1637, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1959:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1638, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1959:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1642, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1648, + "src": "1988:22:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1640, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1988:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1641, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1988:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1958:53:6" + }, + "returnParameters": { + "id": 1647, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1646, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1648, + "src": "2035:16:6", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2035:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1645, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2035:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2034:18:6" + }, + "scope": 1697, + "src": "1935:118:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1649, + "nodeType": "StructuredDocumentation", + "src": "2059:248:6", + "text": " @dev Grants or revokes permission to `operator` to transfer the caller's tokens, according to `approved`,\n Emits an {ApprovalForAll} event.\n Requirements:\n - `operator` cannot be the caller." + }, + "functionSelector": "a22cb465", + "id": 1656, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1651, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1656, + "src": "2339:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1650, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2339:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1653, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1656, + "src": "2357:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1652, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2357:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2338:33:6" + }, + "returnParameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [], + "src": "2380:0:6" + }, + "scope": 1697, + "src": "2312:69:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1657, + "nodeType": "StructuredDocumentation", + "src": "2387:135:6", + "text": " @dev Returns true if `operator` is approved to transfer ``account``'s tokens.\n See {setApprovalForAll}." + }, + "functionSelector": "e985e9c5", + "id": 1666, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1662, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1659, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1666, + "src": "2553:15:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2553:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1661, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1666, + "src": "2570:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2570:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2552:35:6" + }, + "returnParameters": { + "id": 1665, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1664, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1666, + "src": "2611:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1663, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2611:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2610:6:6" + }, + "scope": 1697, + "src": "2527:90:6", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1667, + "nodeType": "StructuredDocumentation", + "src": "2623:559:6", + "text": " @dev Transfers `amount` tokens of token type `id` from `from` to `to`.\n Emits a {TransferSingle} event.\n Requirements:\n - `to` cannot be the zero address.\n - If the caller is not `from`, it must be have been approved to spend ``from``'s tokens via {setApprovalForAll}.\n - `from` must have a balance of tokens of type `id` of at least `amount`.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155Received} and return the\n acceptance magic value." + }, + "functionSelector": "f242432a", + "id": 1680, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1669, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1680, + "src": "3213:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1668, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3213:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1671, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1680, + "src": "3227:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1670, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3227:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1673, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1680, + "src": "3239:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1672, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3239:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1675, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1680, + "src": "3251:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1674, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3251:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1677, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1680, + "src": "3267:19:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1676, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3267:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3212:75:6" + }, + "returnParameters": { + "id": 1679, + "nodeType": "ParameterList", + "parameters": [], + "src": "3296:0:6" + }, + "scope": 1697, + "src": "3187:110:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1681, + "nodeType": "StructuredDocumentation", + "src": "3303:390:6", + "text": " @dev xref:ROOT:erc1155.adoc#batch-operations[Batched] version of {safeTransferFrom}.\n Emits a {TransferBatch} event.\n Requirements:\n - `ids` and `amounts` must have the same length.\n - If `to` refers to a smart contract, it must implement {IERC1155Receiver-onERC1155BatchReceived} and return the\n acceptance magic value." + }, + "functionSelector": "2eb2c2d6", + "id": 1696, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeBatchTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1683, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1696, + "src": "3729:12:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1682, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3729:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1685, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1696, + "src": "3743:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1684, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3743:7:6", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1688, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1696, + "src": "3755:22:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1686, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3755:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1687, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3755:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1691, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1696, + "src": "3779:26:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3779:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1690, + "length": null, + "nodeType": "ArrayTypeName", + "src": "3779:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1693, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1696, + "src": "3807:19:6", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1692, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3807:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3728:99:6" + }, + "returnParameters": { + "id": 1695, + "nodeType": "ParameterList", + "parameters": [], + "src": "3836:0:6" + }, + "scope": 1697, + "src": "3698:139:6", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1698, + "src": "275:3564:6" + } + ], + "src": "33:3807:6" + }, + "id": 6 + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155MetadataURI.sol", + "exportedSymbols": { + "IERC1155MetadataURI": [ + 1712 + ] + }, + "id": 1713, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1699, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:7" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "file": "./IERC1155.sol", + "id": 1700, + "nodeType": "ImportDirective", + "scope": 1713, + "sourceUnit": 1698, + "src": "66:24:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1702, + "name": "IERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1697, + "src": "320:8:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 1703, + "nodeType": "InheritanceSpecifier", + "src": "320:8:7" + } + ], + "contractDependencies": [ + 178, + 1697 + ], + "contractKind": "interface", + "documentation": { + "id": 1701, + "nodeType": "StructuredDocumentation", + "src": "92:194:7", + "text": " @dev Interface of the optional ERC1155MetadataExtension interface, as defined\n in the https://eips.ethereum.org/EIPS/eip-1155#metadata-extensions[EIP].\n _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 1712, + "linearizedBaseContracts": [ + 1712, + 1697, + 178 + ], + "name": "IERC1155MetadataURI", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 1704, + "nodeType": "StructuredDocumentation", + "src": "335:192:7", + "text": " @dev Returns the URI for token type `id`.\n If the `\\{id\\}` substring is present in the URI, it must be replaced by\n clients with the actual token type ID." + }, + "functionSelector": "0e89341c", + "id": 1711, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "uri", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1707, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1706, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1711, + "src": "545:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1705, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "545:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "544:12:7" + }, + "returnParameters": { + "id": 1710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1709, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1711, + "src": "580:13:7", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1708, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "580:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "579:15:7" + }, + "scope": 1712, + "src": "532:63:7", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1713, + "src": "287:310:7" + } + ], + "src": "33:565:7" + }, + "id": 7 + }, + "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155Receiver.sol", + "exportedSymbols": { + "IERC1155Receiver": [ + 1753 + ] + }, + "id": 1754, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1714, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:8" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 1715, + "nodeType": "ImportDirective", + "scope": 1754, + "sourceUnit": 179, + "src": "66:41:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1717, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 178, + "src": "174:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$178", + "typeString": "contract IERC165" + } + }, + "id": 1718, + "nodeType": "InheritanceSpecifier", + "src": "174:7:8" + } + ], + "contractDependencies": [ + 178 + ], + "contractKind": "interface", + "documentation": { + "id": 1716, + "nodeType": "StructuredDocumentation", + "src": "109:34:8", + "text": " _Available since v3.1._" + }, + "fullyImplemented": false, + "id": 1753, + "linearizedBaseContracts": [ + 1753, + 178 + ], + "name": "IERC1155Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 1719, + "nodeType": "StructuredDocumentation", + "src": "189:816:8", + "text": "@dev Handles the receipt of a single ERC1155 token type. This function is\ncalled at the end of a `safeTransferFrom` after the balance has been updated.\nTo accept the transfer, this must return\n`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n(i.e. 0xf23a6e61, or its own function selector).\n@param operator The address which initiated the transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param id The ID of the token being transferred\n@param value The amount of tokens being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed" + }, + "functionSelector": "f23a6e61", + "id": 1734, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC1155Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1730, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1721, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1046:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1720, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1046:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1723, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1072:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1072:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1725, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1094:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1094:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1727, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1114:13:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1726, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1114:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1729, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1137:19:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1728, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1137:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1036:126:8" + }, + "returnParameters": { + "id": 1733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1732, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1734, + "src": "1196:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1731, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1196:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1195:8:8" + }, + "scope": 1753, + "src": "1010:194:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1735, + "nodeType": "StructuredDocumentation", + "src": "1210:977:8", + "text": "@dev Handles the receipt of a multiple ERC1155 token types. This function\nis called at the end of a `safeBatchTransferFrom` after the balances have\nbeen updated. To accept the transfer(s), this must return\n`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n(i.e. 0xbc197c81, or its own function selector).\n@param operator The address which initiated the batch transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param ids An array containing ids of each token being transferred (order and length must match values array)\n@param values An array containing amounts of each token being transferred (order and length must match ids array)\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed" + }, + "functionSelector": "bc197c81", + "id": 1752, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC1155BatchReceived", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1748, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1737, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2233:16:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1736, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2233:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1739, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2259:12:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2259:7:8", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1742, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2281:22:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2281:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1741, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2281:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1745, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2313:25:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2313:7:8", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1744, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2313:9:8", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1747, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2348:19:8", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1746, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2348:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2223:150:8" + }, + "returnParameters": { + "id": 1751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1750, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1752, + "src": "2407:6:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1749, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2407:6:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2406:8:8" + }, + "scope": 1753, + "src": "2192:223:8", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 1754, + "src": "144:2273:8" + } + ], + "src": "33:2385:8" + }, + "id": 8 + }, + "@openzeppelin/contracts/token/ERC20/IERC20.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 1831 + ] + }, + "id": 1832, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1755, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:9" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 1756, + "nodeType": "StructuredDocumentation", + "src": "66:70:9", + "text": " @dev Interface of the ERC20 standard as defined in the EIP." + }, + "fullyImplemented": false, + "id": 1831, + "linearizedBaseContracts": [ + 1831 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 1757, + "nodeType": "StructuredDocumentation", + "src": "160:66:9", + "text": " @dev Returns the amount of tokens in existence." + }, + "functionSelector": "18160ddd", + "id": 1762, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1758, + "nodeType": "ParameterList", + "parameters": [], + "src": "251:2:9" + }, + "returnParameters": { + "id": 1761, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1760, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1762, + "src": "277:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1759, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "277:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "276:9:9" + }, + "scope": 1831, + "src": "231:55:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1763, + "nodeType": "StructuredDocumentation", + "src": "292:72:9", + "text": " @dev Returns the amount of tokens owned by `account`." + }, + "functionSelector": "70a08231", + "id": 1770, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1766, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1765, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1770, + "src": "388:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1764, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "388:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "387:17:9" + }, + "returnParameters": { + "id": 1769, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1768, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1770, + "src": "428:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1767, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "428:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "427:9:9" + }, + "scope": 1831, + "src": "369:68:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1771, + "nodeType": "StructuredDocumentation", + "src": "443:209:9", + "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "a9059cbb", + "id": 1780, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1776, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1773, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1780, + "src": "675:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1772, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "675:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1775, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1780, + "src": "694:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1774, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "694:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "674:35:9" + }, + "returnParameters": { + "id": 1779, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1778, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1780, + "src": "728:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1777, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "728:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "727:6:9" + }, + "scope": 1831, + "src": "657:77:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1781, + "nodeType": "StructuredDocumentation", + "src": "740:264:9", + "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called." + }, + "functionSelector": "dd62ed3e", + "id": 1790, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1786, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1783, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1790, + "src": "1028:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1782, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1028:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1785, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1790, + "src": "1043:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1784, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1043:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1027:32:9" + }, + "returnParameters": { + "id": 1789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1788, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1790, + "src": "1083:7:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1083:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:9:9" + }, + "scope": 1831, + "src": "1009:83:9", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1791, + "nodeType": "StructuredDocumentation", + "src": "1098:642:9", + "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 1800, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1793, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "1762:15:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1762:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1795, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "1779:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1779:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1761:33:9" + }, + "returnParameters": { + "id": 1799, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1798, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1800, + "src": "1813:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1797, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1813:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1812:6:9" + }, + "scope": 1831, + "src": "1745:74:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 1801, + "nodeType": "StructuredDocumentation", + "src": "1825:296:9", + "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 1812, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1808, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1803, + "mutability": "mutable", + "name": "sender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "2148:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2148:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1805, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "2164:17:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2164:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1807, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "2183:14:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1806, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2183:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2147:51:9" + }, + "returnParameters": { + "id": 1811, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1810, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1812, + "src": "2217:4:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1809, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2217:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2216:6:9" + }, + "scope": 1831, + "src": "2126:97:9", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": { + "id": 1813, + "nodeType": "StructuredDocumentation", + "src": "2229:158:9", + "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero." + }, + "id": 1821, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1815, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1821, + "src": "2407:20:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2407:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1817, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1821, + "src": "2429:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1816, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2429:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1819, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1821, + "src": "2449:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2449:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2406:57:9" + }, + "src": "2392:72:9" + }, + { + "anonymous": false, + "documentation": { + "id": 1822, + "nodeType": "StructuredDocumentation", + "src": "2470:148:9", + "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance." + }, + "id": 1830, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1829, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1824, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1830, + "src": "2638:21:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1823, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2638:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1826, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1830, + "src": "2661:23:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2661:7:9", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1828, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1830, + "src": "2686:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2686:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2637:63:9" + }, + "src": "2623:78:9" + } + ], + "scope": 1832, + "src": "137:2566:9" + } + ], + "src": "33:2671:9" + }, + "id": 9 + }, + "@openzeppelin/contracts/token/ERC721/ERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", + "exportedSymbols": { + "ERC721": [ + 2775 + ] + }, + "id": 2776, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1833, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:10" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "file": "../../utils/Context.sol", + "id": 1834, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 3287, + "src": "66:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 1835, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 2892, + "src": "100:23:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", + "file": "./IERC721Metadata.sol", + "id": 1836, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 2950, + "src": "124:31:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol", + "file": "./IERC721Enumerable.sol", + "id": 1837, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 2923, + "src": "156:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "file": "./IERC721Receiver.sol", + "id": 1838, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 2968, + "src": "190:31:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/ERC165.sol", + "file": "../../introspection/ERC165.sol", + "id": 1839, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 167, + "src": "222:40:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", + "file": "../../math/SafeMath.sol", + "id": 1840, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 534, + "src": "263:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "file": "../../utils/Address.sol", + "id": 1841, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 3264, + "src": "297:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol", + "file": "../../utils/EnumerableSet.sol", + "id": 1842, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 4339, + "src": "331:39:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/EnumerableMap.sol", + "file": "../../utils/EnumerableMap.sol", + "id": 1843, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 3847, + "src": "371:39:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "file": "../../utils/Strings.sol", + "id": 1844, + "nodeType": "ImportDirective", + "scope": 2776, + "sourceUnit": 4426, + "src": "411:33:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1846, + "name": "Context", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3286, + "src": "590:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$3286", + "typeString": "contract Context" + } + }, + "id": 1847, + "nodeType": "InheritanceSpecifier", + "src": "590:7:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1848, + "name": "ERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 166, + "src": "599:6:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC165_$166", + "typeString": "contract ERC165" + } + }, + "id": 1849, + "nodeType": "InheritanceSpecifier", + "src": "599:6:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1850, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2891, + "src": "607:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2891", + "typeString": "contract IERC721" + } + }, + "id": 1851, + "nodeType": "InheritanceSpecifier", + "src": "607:7:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1852, + "name": "IERC721Metadata", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2949, + "src": "616:15:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Metadata_$2949", + "typeString": "contract IERC721Metadata" + } + }, + "id": 1853, + "nodeType": "InheritanceSpecifier", + "src": "616:15:10" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1854, + "name": "IERC721Enumerable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2922, + "src": "633:17:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Enumerable_$2922", + "typeString": "contract IERC721Enumerable" + } + }, + "id": 1855, + "nodeType": "InheritanceSpecifier", + "src": "633:17:10" + } + ], + "contractDependencies": [ + 166, + 178, + 2891, + 2922, + 2949, + 3286 + ], + "contractKind": "contract", + "documentation": { + "id": 1845, + "nodeType": "StructuredDocumentation", + "src": "446:124:10", + "text": " @title ERC721 Non-Fungible Token Standard basic implementation\n @dev see https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": true, + "id": 2775, + "linearizedBaseContracts": [ + 2775, + 2922, + 2949, + 2891, + 166, + 178, + 3286 + ], + "name": "ERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 1858, + "libraryName": { + "contractScope": null, + "id": 1856, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 533, + "src": "663:8:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$533", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "657:27:10", + "typeName": { + "id": 1857, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "676:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "id": 1861, + "libraryName": { + "contractScope": null, + "id": 1859, + "name": "Address", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3263, + "src": "695:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + }, + "nodeType": "UsingForDirective", + "src": "689:26:10", + "typeName": { + "id": 1860, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "707:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + { + "id": 1864, + "libraryName": { + "contractScope": null, + "id": 1862, + "name": "EnumerableSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4338, + "src": "726:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableSet_$4338", + "typeString": "library EnumerableSet" + } + }, + "nodeType": "UsingForDirective", + "src": "720:46:10", + "typeName": { + "contractScope": null, + "id": 1863, + "name": "EnumerableSet.UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "744:21:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + { + "id": 1867, + "libraryName": { + "contractScope": null, + "id": 1865, + "name": "EnumerableMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3846, + "src": "777:13:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_EnumerableMap_$3846", + "typeString": "library EnumerableMap" + } + }, + "nodeType": "UsingForDirective", + "src": "771:55:10", + "typeName": { + "contractScope": null, + "id": 1866, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "795:30:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + } + }, + { + "id": 1870, + "libraryName": { + "contractScope": null, + "id": 1868, + "name": "Strings", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4425, + "src": "837:7:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Strings_$4425", + "typeString": "library Strings" + } + }, + "nodeType": "UsingForDirective", + "src": "831:26:10", + "typeName": { + "id": 1869, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "849:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "id": 1873, + "mutability": "constant", + "name": "_ERC721_RECEIVED", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1035:53:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1871, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "1035:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783135306237613032", + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1078:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_353073666_by_1", + "typeString": "int_const 353073666" + }, + "value": "0x150b7a02" + }, + "visibility": "private" + }, + { + "constant": false, + "id": 1877, + "mutability": "mutable", + "name": "_holderTokens", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1172:64:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "typeName": { + "id": 1876, + "keyType": { + "id": 1874, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1181:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1172:42:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet)" + }, + "valueType": { + "contractScope": null, + "id": 1875, + "name": "EnumerableSet.UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "1192:21:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1879, + "mutability": "mutable", + "name": "_tokenOwners", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1300:51:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 1878, + "name": "EnumerableMap.UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "1300:30:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1883, + "mutability": "mutable", + "name": "_tokenApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1407:52:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "typeName": { + "id": 1882, + "keyType": { + "id": 1880, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1416:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1407:28:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + }, + "valueType": { + "id": 1881, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1427:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1889, + "mutability": "mutable", + "name": "_operatorApprovals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1514:73:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "typeName": { + "id": 1888, + "keyType": { + "id": 1884, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1523:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1514:46:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + }, + "valueType": { + "id": 1887, + "keyType": { + "id": 1885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1543:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1534:25:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1886, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1554:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1891, + "mutability": "mutable", + "name": "_name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1612:20:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 1890, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1612:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1893, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1659:22:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 1892, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1659:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1897, + "mutability": "mutable", + "name": "_tokenURIs", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1727:46:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "typeName": { + "id": 1896, + "keyType": { + "id": 1894, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1736:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "1727:27:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string)" + }, + "valueType": { + "id": 1895, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1747:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": false, + "id": 1899, + "mutability": "mutable", + "name": "_baseURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "1796:23:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 1898, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "1796:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "private" + }, + { + "constant": true, + "id": 1902, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "2695:57:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1900, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2695:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783830616335386364", + "id": 1901, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2742:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2158778573_by_1", + "typeString": "int_const 2158778573" + }, + "value": "0x80ac58cd" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1905, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "3018:66:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1903, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3018:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783562356531333966", + "id": 1904, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3074:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1532892063_by_1", + "typeString": "int_const 1532892063" + }, + "value": "0x5b5e139f" + }, + "visibility": "private" + }, + { + "constant": true, + "id": 1908, + "mutability": "constant", + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2775, + "src": "3389:68:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1906, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3389:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30783738306539643633", + "id": 1907, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3447:10:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2014223715_by_1", + "typeString": "int_const 2014223715" + }, + "value": "0x780e9d63" + }, + "visibility": "private" + }, + { + "body": { + "id": 1936, + "nodeType": "Block", + "src": "3641:305:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1916, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1891, + "src": "3651:5:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1917, + "name": "name_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1911, + "src": "3659:5:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3651:13:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1919, + "nodeType": "ExpressionStatement", + "src": "3651:13:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1920, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "3674:7:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1921, + "name": "symbol_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "3684:7:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "3674:17:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 1923, + "nodeType": "ExpressionStatement", + "src": "3674:17:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1925, + "name": "_INTERFACE_ID_ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1902, + "src": "3798:20:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1924, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3779:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 1926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3779:40:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1927, + "nodeType": "ExpressionStatement", + "src": "3779:40:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1929, + "name": "_INTERFACE_ID_ERC721_METADATA", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "3848:29:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1928, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3829:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3829:49:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1931, + "nodeType": "ExpressionStatement", + "src": "3829:49:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1933, + "name": "_INTERFACE_ID_ERC721_ENUMERABLE", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1908, + "src": "3907:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + ], + "id": 1932, + "name": "_registerInterface", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "3888:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes4_$returns$__$", + "typeString": "function (bytes4)" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3888:51:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1935, + "nodeType": "ExpressionStatement", + "src": "3888:51:10" + } + ] + }, + "documentation": { + "id": 1909, + "nodeType": "StructuredDocumentation", + "src": "3464:108:10", + "text": " @dev Initializes the contract by setting a `name` and a `symbol` to the token collection." + }, + "id": 1937, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 1914, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1911, + "mutability": "mutable", + "name": "name_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1937, + "src": "3590:19:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1910, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3590:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1913, + "mutability": "mutable", + "name": "symbol_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1937, + "src": "3611:21:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1912, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3611:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3589:44:10" + }, + "returnParameters": { + "id": 1915, + "nodeType": "ParameterList", + "parameters": [], + "src": "3641:0:10" + }, + "scope": 2775, + "src": "3577:369:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 2816 + ], + "body": { + "id": 1962, + "nodeType": "Block", + "src": "4086:137:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1947, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "4104:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1950, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4121:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4113:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 1948, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4113:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4113:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "4104:19:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373", + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4125:44:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", + "typeString": "literal_string \"ERC721: balance query for the zero address\"" + }, + "value": "ERC721: balance query for the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7395d4d3901c50cdfcab223d072f9aa36241df5d883e62cbf147ee1b05a9e6ba", + "typeString": "literal_string \"ERC721: balance query for the zero address\"" + } + ], + "id": 1946, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4096:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4096:74:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1955, + "nodeType": "ExpressionStatement", + "src": "4096:74:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1956, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "4187:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 1958, + "indexExpression": { + "argumentTypes": null, + "id": 1957, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1940, + "src": "4201:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4187:20:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 1959, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 4317, + "src": "4187:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$4243_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer) view returns (uint256)" + } + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4187:29:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1945, + "id": 1961, + "nodeType": "Return", + "src": "4180:36:10" + } + ] + }, + "documentation": { + "id": 1938, + "nodeType": "StructuredDocumentation", + "src": "3952:48:10", + "text": " @dev See {IERC721-balanceOf}." + }, + "functionSelector": "70a08231", + "id": 1963, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1942, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4059:8:10" + }, + "parameters": { + "id": 1941, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1940, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1963, + "src": "4024:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1939, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4024:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4023:15:10" + }, + "returnParameters": { + "id": 1945, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1944, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1963, + "src": "4077:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1943, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4077:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4076:9:10" + }, + "scope": 2775, + "src": "4005:218:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2824 + ], + "body": { + "id": 1978, + "nodeType": "Block", + "src": "4361:94:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1974, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1966, + "src": "4395:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 1975, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4404:43:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", + "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" + }, + "value": "ERC721: owner query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_7481f3df2a424c0755a1ad2356614e9a5a358d461ea2eae1f89cb21cbad00397", + "typeString": "literal_string \"ERC721: owner query for nonexistent token\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 1972, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "4378:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 1973, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "get", + "nodeType": "MemberAccess", + "referencedDeclaration": 3845, + "src": "4378:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_address_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,string memory) view returns (address)" + } + }, + "id": 1976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4378:70:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1971, + "id": 1977, + "nodeType": "Return", + "src": "4371:77:10" + } + ] + }, + "documentation": { + "id": 1964, + "nodeType": "StructuredDocumentation", + "src": "4229:46:10", + "text": " @dev See {IERC721-ownerOf}." + }, + "functionSelector": "6352211e", + "id": 1979, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1968, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4334:8:10" + }, + "parameters": { + "id": 1967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1966, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1979, + "src": "4297:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1965, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4297:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4296:17:10" + }, + "returnParameters": { + "id": 1971, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1970, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1979, + "src": "4352:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1969, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4352:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4351:9:10" + }, + "scope": 2775, + "src": "4280:175:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2934 + ], + "body": { + "id": 1988, + "nodeType": "Block", + "src": "4586:29:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1986, + "name": "_name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1891, + "src": "4603:5:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1985, + "id": 1987, + "nodeType": "Return", + "src": "4596:12:10" + } + ] + }, + "documentation": { + "id": 1980, + "nodeType": "StructuredDocumentation", + "src": "4461:51:10", + "text": " @dev See {IERC721Metadata-name}." + }, + "functionSelector": "06fdde03", + "id": 1989, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1982, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4553:8:10" + }, + "parameters": { + "id": 1981, + "nodeType": "ParameterList", + "parameters": [], + "src": "4530:2:10" + }, + "returnParameters": { + "id": 1985, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1984, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1989, + "src": "4571:13:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1983, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4571:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4570:15:10" + }, + "scope": 2775, + "src": "4517:98:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2940 + ], + "body": { + "id": 1998, + "nodeType": "Block", + "src": "4750:31:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1996, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1893, + "src": "4767:7:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 1995, + "id": 1997, + "nodeType": "Return", + "src": "4760:14:10" + } + ] + }, + "documentation": { + "id": 1990, + "nodeType": "StructuredDocumentation", + "src": "4621:53:10", + "text": " @dev See {IERC721Metadata-symbol}." + }, + "functionSelector": "95d89b41", + "id": 1999, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 1992, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4717:8:10" + }, + "parameters": { + "id": 1991, + "nodeType": "ParameterList", + "parameters": [], + "src": "4694:2:10" + }, + "returnParameters": { + "id": 1995, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1994, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 1999, + "src": "4735:13:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 1993, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4735:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4734:15:10" + }, + "scope": 2775, + "src": "4679:102:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2948 + ], + "body": { + "id": 2066, + "nodeType": "Block", + "src": "4935:688:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2010, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2002, + "src": "4961:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2009, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "4953:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 2011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4953:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 2012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4971:49:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + }, + "value": "ERC721Metadata: URI query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a2d45c0fba603d40d82d590051761ca952d1ab9d78cca6d0d464d7b6e961a9cb", + "typeString": "literal_string \"ERC721Metadata: URI query for nonexistent token\"" + } + ], + "id": 2008, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4945:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4945:76:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2014, + "nodeType": "ExpressionStatement", + "src": "4945:76:10" + }, + { + "assignments": [ + 2016 + ], + "declarations": [ + { + "constant": false, + "id": 2016, + "mutability": "mutable", + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2066, + "src": "5032:23:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2015, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5032:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2020, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2017, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "5058:10:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2019, + "indexExpression": { + "argumentTypes": null, + "id": 2018, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2002, + "src": "5069:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5058:19:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5032:45:10" + }, + { + "assignments": [ + 2022 + ], + "declarations": [ + { + "constant": false, + "id": 2022, + "mutability": "mutable", + "name": "base", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2066, + "src": "5087:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2021, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5087:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2025, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2023, + "name": "baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "5108:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_string_memory_ptr_$", + "typeString": "function () view returns (string memory)" + } + }, + "id": 2024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5108:9:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5087:30:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2028, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "5196:4:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2027, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5190:5:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2026, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5190:5:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5190:11:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5190:18:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5212:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5190:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2036, + "nodeType": "IfStatement", + "src": "5186:70:10", + "trueBody": { + "id": 2035, + "nodeType": "Block", + "src": "5215:41:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2033, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2016, + "src": "5236:9:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2007, + "id": 2034, + "nodeType": "Return", + "src": "5229:16:10" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2043, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2039, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2016, + "src": "5364:9:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5358:5:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2037, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5358:5:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2040, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5358:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5358:23:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2042, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5384:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5358:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2054, + "nodeType": "IfStatement", + "src": "5354:106:10", + "trueBody": { + "id": 2053, + "nodeType": "Block", + "src": "5387:73:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2048, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "5432:4:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 2049, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2016, + "src": "5438:9:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2046, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5415:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5415:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5415:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2045, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5408:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 2044, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5408:6:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5408:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2007, + "id": 2052, + "nodeType": "Return", + "src": "5401:48:10" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2059, + "name": "base", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "5590:4:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2060, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2002, + "src": "5596:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "toString", + "nodeType": "MemberAccess", + "referencedDeclaration": 4424, + "src": "5596:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_string_memory_ptr_$bound_to$_t_uint256_$", + "typeString": "function (uint256) pure returns (string memory)" + } + }, + "id": 2062, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5596:18:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2057, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5573:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5573:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 2063, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5573:42:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5566:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 2055, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5566:6:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5566:50:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 2007, + "id": 2065, + "nodeType": "Return", + "src": "5559:57:10" + } + ] + }, + "documentation": { + "id": 2000, + "nodeType": "StructuredDocumentation", + "src": "4787:55:10", + "text": " @dev See {IERC721Metadata-tokenURI}." + }, + "functionSelector": "c87b56dd", + "id": 2067, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2004, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4902:8:10" + }, + "parameters": { + "id": 2003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2002, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2067, + "src": "4865:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4865:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4864:17:10" + }, + "returnParameters": { + "id": 2007, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2006, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2067, + "src": "4920:13:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2005, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4920:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4919:15:10" + }, + "scope": 2775, + "src": "4847:776:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2075, + "nodeType": "Block", + "src": "5918:32:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2073, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1899, + "src": "5935:8:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "functionReturnParameters": 2072, + "id": 2074, + "nodeType": "Return", + "src": "5928:15:10" + } + ] + }, + "documentation": { + "id": 2068, + "nodeType": "StructuredDocumentation", + "src": "5629:221:10", + "text": " @dev Returns the base URI set via {_setBaseURI}. This will be\n automatically added as a prefix in {tokenURI} to each token's URI, or\n to the token ID if no specific URI is set for that token ID." + }, + "functionSelector": "6c0360eb", + "id": 2076, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "baseURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2069, + "nodeType": "ParameterList", + "parameters": [], + "src": "5871:2:10" + }, + "returnParameters": { + "id": 2072, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2071, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2076, + "src": "5903:13:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2070, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5903:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5902:15:10" + }, + "scope": 2775, + "src": "5855:95:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2913 + ], + "body": { + "id": 2094, + "nodeType": "Block", + "src": "6135:54:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2091, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "6176:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2087, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "6152:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 2089, + "indexExpression": { + "argumentTypes": null, + "id": 2088, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2079, + "src": "6166:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6152:20:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 2090, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 4337, + "src": "6152:23:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintSet_$4243_storage_ptr_$_t_uint256_$returns$_t_uint256_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) view returns (uint256)" + } + }, + "id": 2092, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6152:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2086, + "id": 2093, + "nodeType": "Return", + "src": "6145:37:10" + } + ] + }, + "documentation": { + "id": 2077, + "nodeType": "StructuredDocumentation", + "src": "5956:68:10", + "text": " @dev See {IERC721Enumerable-tokenOfOwnerByIndex}." + }, + "functionSelector": "2f745c59", + "id": 2095, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2083, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6108:8:10" + }, + "parameters": { + "id": 2082, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2079, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "6058:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2078, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6058:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2081, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "6073:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2080, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6073:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6057:30:10" + }, + "returnParameters": { + "id": 2086, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2085, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2095, + "src": "6126:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6126:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6125:9:10" + }, + "scope": 2775, + "src": "6029:160:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2903 + ], + "body": { + "id": 2106, + "nodeType": "Block", + "src": "6330:138:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2102, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "6440:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": 3706, + "src": "6440:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$3620_storage_ptr_$returns$_t_uint256_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer) view returns (uint256)" + } + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6440:21:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2101, + "id": 2105, + "nodeType": "Return", + "src": "6433:28:10" + } + ] + }, + "documentation": { + "id": 2096, + "nodeType": "StructuredDocumentation", + "src": "6195:60:10", + "text": " @dev See {IERC721Enumerable-totalSupply}." + }, + "functionSelector": "18160ddd", + "id": 2107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2098, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6303:8:10" + }, + "parameters": { + "id": 2097, + "nodeType": "ParameterList", + "parameters": [], + "src": "6280:2:10" + }, + "returnParameters": { + "id": 2101, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2100, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2107, + "src": "6321:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2099, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6321:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6320:9:10" + }, + "scope": 2775, + "src": "6260:208:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2921 + ], + "body": { + "id": 2125, + "nodeType": "Block", + "src": "6624:85:10", + "statements": [ + { + "assignments": [ + 2117, + null + ], + "declarations": [ + { + "constant": false, + "id": 2117, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2125, + "src": "6635:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6635:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 2122, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2120, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2110, + "src": "6672:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2118, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "6656:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2119, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "at", + "nodeType": "MemberAccess", + "referencedDeclaration": 3745, + "src": "6656:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$returns$_t_uint256_$_t_address_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (uint256,address)" + } + }, + "id": 2121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6656:22:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_$", + "typeString": "tuple(uint256,address)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6634:44:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 2123, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "6695:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 2115, + "id": 2124, + "nodeType": "Return", + "src": "6688:14:10" + } + ] + }, + "documentation": { + "id": 2108, + "nodeType": "StructuredDocumentation", + "src": "6474:61:10", + "text": " @dev See {IERC721Enumerable-tokenByIndex}." + }, + "functionSelector": "4f6ccce7", + "id": 2126, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2112, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6597:8:10" + }, + "parameters": { + "id": 2111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2110, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2126, + "src": "6562:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6562:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6561:15:10" + }, + "returnParameters": { + "id": 2115, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2114, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2126, + "src": "6615:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6615:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6614:9:10" + }, + "scope": 2775, + "src": "6540:169:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2852 + ], + "body": { + "id": 2169, + "nodeType": "Block", + "src": "6836:325:10", + "statements": [ + { + "assignments": [ + 2136 + ], + "declarations": [ + { + "constant": false, + "id": 2136, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2169, + "src": "6846:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6846:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2141, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2139, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "6877:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2137, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "6862:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1979, + "src": "6862:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2140, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6862:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6846:39:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2143, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2129, + "src": "6903:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 2144, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "6909:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6903:11:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76616c20746f2063757272656e74206f776e6572", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6916:35:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "typeString": "literal_string \"ERC721: approval to current owner\"" + }, + "value": "ERC721: approval to current owner" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b51b4875eede07862961e8f9365c6749f5fe55c6ee5d7a9e42b6912ad0b15942", + "typeString": "literal_string \"ERC721: approval to current owner\"" + } + ], + "id": 2142, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6895:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2147, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6895:57:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2148, + "nodeType": "ExpressionStatement", + "src": "6895:57:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2150, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "6971:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6971:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2152, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "6987:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6971:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2156, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2136, + "src": "7020:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2157, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "7027:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7027:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "expression": { + "argumentTypes": null, + "id": 2154, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "6996:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 2243, + "src": "6996:23:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 2159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6996:44:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6971:69:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c", + "id": 2161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7054:58:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", + "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" + }, + "value": "ERC721: approve caller is not owner nor approved for all" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_6d83cef3e0cb19b8320a9c5feb26b56bbb08f152a8e61b12eca3302d8d68b23d", + "typeString": "literal_string \"ERC721: approve caller is not owner nor approved for all\"" + } + ], + "id": 2149, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6963:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6963:159:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2163, + "nodeType": "ExpressionStatement", + "src": "6963:159:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2165, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2129, + "src": "7142:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2166, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2131, + "src": "7146:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2164, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2763, + "src": "7133:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7133:21:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2168, + "nodeType": "ExpressionStatement", + "src": "7133:21:10" + } + ] + }, + "documentation": { + "id": 2127, + "nodeType": "StructuredDocumentation", + "src": "6715:46:10", + "text": " @dev See {IERC721-approve}." + }, + "functionSelector": "095ea7b3", + "id": 2170, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2133, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "6827:8:10" + }, + "parameters": { + "id": 2132, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2129, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2170, + "src": "6783:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2128, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6783:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2131, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2170, + "src": "6795:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2130, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6795:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6782:29:10" + }, + "returnParameters": { + "id": 2134, + "nodeType": "ParameterList", + "parameters": [], + "src": "6836:0:10" + }, + "scope": 2775, + "src": "6766:395:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2860 + ], + "body": { + "id": 2190, + "nodeType": "Block", + "src": "7307:132:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2181, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2173, + "src": "7333:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2180, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "7325:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 2182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7325:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7343:46:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", + "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" + }, + "value": "ERC721: approved query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9291e0f44949204f2e9b40e6be090924979d6047b2365868f4e9f027722eb89d", + "typeString": "literal_string \"ERC721: approved query for nonexistent token\"" + } + ], + "id": 2179, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7317:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7317:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2185, + "nodeType": "ExpressionStatement", + "src": "7317:73:10" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2186, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "7408:15:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 2188, + "indexExpression": { + "argumentTypes": null, + "id": 2187, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2173, + "src": "7424:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7408:24:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 2178, + "id": 2189, + "nodeType": "Return", + "src": "7401:31:10" + } + ] + }, + "documentation": { + "id": 2171, + "nodeType": "StructuredDocumentation", + "src": "7167:50:10", + "text": " @dev See {IERC721-getApproved}." + }, + "functionSelector": "081812fc", + "id": 2191, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2175, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7280:8:10" + }, + "parameters": { + "id": 2174, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2173, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2191, + "src": "7243:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2172, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7243:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7242:17:10" + }, + "returnParameters": { + "id": 2178, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2177, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2191, + "src": "7298:7:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7298:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7297:9:10" + }, + "scope": 2775, + "src": "7222:217:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2868 + ], + "body": { + "id": 2224, + "nodeType": "Block", + "src": "7590:206:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2201, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "7608:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2202, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "7620:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7620:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "7608:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20617070726f766520746f2063616c6c6572", + "id": 2205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7634:27:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "typeString": "literal_string \"ERC721: approve to caller\"" + }, + "value": "ERC721: approve to caller" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_45fe4329685be5ecd250fd0e6a25aea0ea4d0e30fb6a73c118b95749e6d70d05", + "typeString": "literal_string \"ERC721: approve to caller\"" + } + ], + "id": 2200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "7600:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7600:62:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2207, + "nodeType": "ExpressionStatement", + "src": "7600:62:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 2215, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2208, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "7673:18:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 2212, + "indexExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2209, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "7692:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7692:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7673:32:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2213, + "indexExpression": { + "argumentTypes": null, + "id": 2211, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "7706:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7673:42:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2214, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "7718:8:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "7673:53:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2216, + "nodeType": "ExpressionStatement", + "src": "7673:53:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2218, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "7756:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7756:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2220, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2194, + "src": "7770:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2221, + "name": "approved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2196, + "src": "7780:8:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2217, + "name": "ApprovalForAll", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2808, + "src": "7741:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bool_$returns$__$", + "typeString": "function (address,address,bool)" + } + }, + "id": 2222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7741:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2223, + "nodeType": "EmitStatement", + "src": "7736:53:10" + } + ] + }, + "documentation": { + "id": 2192, + "nodeType": "StructuredDocumentation", + "src": "7445:56:10", + "text": " @dev See {IERC721-setApprovalForAll}." + }, + "functionSelector": "a22cb465", + "id": 2225, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2198, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7581:8:10" + }, + "parameters": { + "id": 2197, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2194, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2225, + "src": "7533:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2193, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7533:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2196, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2225, + "src": "7551:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2195, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7551:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7532:33:10" + }, + "returnParameters": { + "id": 2199, + "nodeType": "ParameterList", + "parameters": [], + "src": "7590:0:10" + }, + "scope": 2775, + "src": "7506:290:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2878 + ], + "body": { + "id": 2242, + "nodeType": "Block", + "src": "7965:59:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2236, + "name": "_operatorApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1889, + "src": "7982:18:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(address => mapping(address => bool))" + } + }, + "id": 2238, + "indexExpression": { + "argumentTypes": null, + "id": 2237, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2228, + "src": "8001:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7982:25:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2240, + "indexExpression": { + "argumentTypes": null, + "id": 2239, + "name": "operator", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2230, + "src": "8008:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7982:35:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2235, + "id": 2241, + "nodeType": "Return", + "src": "7975:42:10" + } + ] + }, + "documentation": { + "id": 2226, + "nodeType": "StructuredDocumentation", + "src": "7802:55:10", + "text": " @dev See {IERC721-isApprovedForAll}." + }, + "functionSelector": "e985e9c5", + "id": 2243, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2232, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "7941:8:10" + }, + "parameters": { + "id": 2231, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2228, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2243, + "src": "7888:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7888:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2230, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2243, + "src": "7903:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2229, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7903:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7887:33:10" + }, + "returnParameters": { + "id": 2235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2234, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2243, + "src": "7959:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2233, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7959:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7958:6:10" + }, + "scope": 2775, + "src": "7862:162:10", + "stateMutability": "view", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2844 + ], + "body": { + "id": 2269, + "nodeType": "Block", + "src": "8175:211:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2256, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "8264:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8264:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2258, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "8278:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2255, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "8245:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 2259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8245:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8288:51:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + }, + "value": "ERC721: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + } + ], + "id": 2254, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8237:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2261, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8237:103:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2262, + "nodeType": "ExpressionStatement", + "src": "8237:103:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2264, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2246, + "src": "8361:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2265, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2248, + "src": "8367:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2266, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "8371:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2263, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2648, + "src": "8351:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8351:28:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2268, + "nodeType": "ExpressionStatement", + "src": "8351:28:10" + } + ] + }, + "documentation": { + "id": 2244, + "nodeType": "StructuredDocumentation", + "src": "8030:51:10", + "text": " @dev See {IERC721-transferFrom}." + }, + "functionSelector": "23b872dd", + "id": 2270, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2252, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8166:8:10" + }, + "parameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2246, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2270, + "src": "8108:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2245, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8108:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2248, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2270, + "src": "8122:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2247, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8122:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2250, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2270, + "src": "8134:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2249, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8134:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8107:43:10" + }, + "returnParameters": { + "id": 2253, + "nodeType": "ParameterList", + "parameters": [], + "src": "8175:0:10" + }, + "scope": 2775, + "src": "8086:300:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2834 + ], + "body": { + "id": 2288, + "nodeType": "Block", + "src": "8545:56:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2282, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2273, + "src": "8572:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2283, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2275, + "src": "8578:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2284, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2277, + "src": "8582:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 2285, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8591:2:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 2281, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2289, + 2319 + ], + "referencedDeclaration": 2319, + "src": "8555:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 2286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8555:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2287, + "nodeType": "ExpressionStatement", + "src": "8555:39:10" + } + ] + }, + "documentation": { + "id": 2271, + "nodeType": "StructuredDocumentation", + "src": "8392:55:10", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "42842e0e", + "id": 2289, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2279, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8536:8:10" + }, + "parameters": { + "id": 2278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2273, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2289, + "src": "8478:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2272, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8478:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2275, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2289, + "src": "8492:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2274, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8492:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2277, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2289, + "src": "8504:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2276, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8504:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8477:43:10" + }, + "returnParameters": { + "id": 2280, + "nodeType": "ParameterList", + "parameters": [], + "src": "8545:0:10" + }, + "scope": 2775, + "src": "8452:149:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "baseFunctions": [ + 2890 + ], + "body": { + "id": 2318, + "nodeType": "Block", + "src": "8780:169:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2304, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "8817:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8817:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2306, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "8831:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2303, + "name": "_isApprovedOrOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2404, + "src": "8798:18:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) view returns (bool)" + } + }, + "id": 2307, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8798:41:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564", + "id": 2308, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8841:51:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + }, + "value": "ERC721: transfer caller is not owner nor approved" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c8682f3ad98807db59a6ec6bb812b72fed0a66e3150fa8239699ee83885247f2", + "typeString": "literal_string \"ERC721: transfer caller is not owner nor approved\"" + } + ], + "id": 2302, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "8790:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8790:103:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2310, + "nodeType": "ExpressionStatement", + "src": "8790:103:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2312, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2292, + "src": "8917:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2313, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2294, + "src": "8923:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2314, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2296, + "src": "8927:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2315, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2298, + "src": "8936:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2311, + "name": "_safeTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2348, + "src": "8903:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 2316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8903:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2317, + "nodeType": "ExpressionStatement", + "src": "8903:39:10" + } + ] + }, + "documentation": { + "id": 2290, + "nodeType": "StructuredDocumentation", + "src": "8607:55:10", + "text": " @dev See {IERC721-safeTransferFrom}." + }, + "functionSelector": "b88d4fde", + "id": 2319, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 2300, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "8771:8:10" + }, + "parameters": { + "id": 2299, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2292, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2319, + "src": "8693:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2291, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8693:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2294, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2319, + "src": "8707:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2293, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8707:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2296, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2319, + "src": "8719:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2295, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8719:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2298, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2319, + "src": "8736:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2297, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8736:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8692:63:10" + }, + "returnParameters": { + "id": 2301, + "nodeType": "ParameterList", + "parameters": [], + "src": "8780:0:10" + }, + "scope": 2775, + "src": "8667:282:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "public" + }, + { + "body": { + "id": 2347, + "nodeType": "Block", + "src": "9914:166:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2332, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "9934:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2333, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "9940:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2334, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2326, + "src": "9944:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2331, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2648, + "src": "9924:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9924:28:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2336, + "nodeType": "ExpressionStatement", + "src": "9924:28:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2339, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "9993:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2340, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2324, + "src": "9999:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2341, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2326, + "src": "10003:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2342, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2328, + "src": "10012:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2338, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2739, + "src": "9970:22:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9970:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 2344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10020:52:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "id": 2337, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "9962:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9962:111:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2346, + "nodeType": "ExpressionStatement", + "src": "9962:111:10" + } + ] + }, + "documentation": { + "id": 2320, + "nodeType": "StructuredDocumentation", + "src": "8955:851:10", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n `_data` is additional data, it has no specified format and it is sent in call to `to`.\n This internal function is equivalent to {safeTransferFrom}, and can be used to e.g.\n implement alternative mechanisms to perform token transfer, such as signature-based.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 2348, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2329, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2322, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2348, + "src": "9834:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2321, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9834:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2324, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2348, + "src": "9848:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9848:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2326, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2348, + "src": "9860:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2325, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9860:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2328, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2348, + "src": "9877:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2327, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9877:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9833:63:10" + }, + "returnParameters": { + "id": 2330, + "nodeType": "ParameterList", + "parameters": [], + "src": "9914:0:10" + }, + "scope": 2775, + "src": "9811:269:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2361, + "nodeType": "Block", + "src": "10454:54:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2358, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2351, + "src": "10493:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2356, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "10471:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2357, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "contains", + "nodeType": "MemberAccess", + "referencedDeclaration": 3692, + "src": "10471:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) view returns (bool)" + } + }, + "id": 2359, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10471:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2355, + "id": 2360, + "nodeType": "Return", + "src": "10464:37:10" + } + ] + }, + "documentation": { + "id": 2349, + "nodeType": "StructuredDocumentation", + "src": "10086:292:10", + "text": " @dev Returns whether `tokenId` exists.\n Tokens can be managed by their owner or approved accounts via {approve} or {setApprovalForAll}.\n Tokens start existing when they are minted (`_mint`),\n and stop existing when they are burned (`_burn`)." + }, + "id": 2362, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_exists", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2351, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2362, + "src": "10400:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2350, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10400:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10399:17:10" + }, + "returnParameters": { + "id": 2355, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2354, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2362, + "src": "10448:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2353, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10448:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10447:6:10" + }, + "scope": 2775, + "src": "10383:125:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2403, + "nodeType": "Block", + "src": "10765:252:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2374, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2367, + "src": "10791:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2373, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "10783:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 2375, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10783:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e", + "id": 2376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10801:46:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", + "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" + }, + "value": "ERC721: operator query for nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5797d1ccb08b83980dd0c07ea40d8f6a64d35fff736a19bdd17522954cb0899c", + "typeString": "literal_string \"ERC721: operator query for nonexistent token\"" + } + ], + "id": 2372, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "10775:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10775:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2378, + "nodeType": "ExpressionStatement", + "src": "10775:73:10" + }, + { + "assignments": [ + 2380 + ], + "declarations": [ + { + "constant": false, + "id": 2380, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2403, + "src": "10858:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2379, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10858:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2385, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2383, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2367, + "src": "10889:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2381, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "10874:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1979, + "src": "10874:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10874:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "10858:39:10" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 2394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2386, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "10915:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2387, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2380, + "src": "10926:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10915:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2390, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2367, + "src": "10947:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2389, + "name": "getApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2191, + "src": "10935:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2391, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10935:20:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2392, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "10959:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10935:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10915:51:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2397, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2380, + "src": "10994:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2398, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "11001:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2395, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "10970:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isApprovedForAll", + "nodeType": "MemberAccess", + "referencedDeclaration": 2243, + "src": "10970:23:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$returns$_t_bool_$", + "typeString": "function (address,address) view returns (bool)" + } + }, + "id": 2399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10970:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "10915:94:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2401, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "10914:96:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2371, + "id": 2402, + "nodeType": "Return", + "src": "10907:103:10" + } + ] + }, + "documentation": { + "id": 2363, + "nodeType": "StructuredDocumentation", + "src": "10514:147:10", + "text": " @dev Returns whether `spender` is allowed to manage `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 2404, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_isApprovedOrOwner", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2368, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2365, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2404, + "src": "10694:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "10694:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2367, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2404, + "src": "10711:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2366, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "10711:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10693:34:10" + }, + "returnParameters": { + "id": 2371, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2370, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2404, + "src": "10759:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2369, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "10759:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "10758:6:10" + }, + "scope": 2775, + "src": "10666:351:10", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2418, + "nodeType": "Block", + "src": "11413:43:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2413, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2407, + "src": "11433:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2414, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "11437:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 2415, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11446:2:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 2412, + "name": "_safeMint", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2419, + 2448 + ], + "referencedDeclaration": 2448, + "src": "11423:9:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,bytes memory)" + } + }, + "id": 2416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11423:26:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2417, + "nodeType": "ExpressionStatement", + "src": "11423:26:10" + } + ] + }, + "documentation": { + "id": 2405, + "nodeType": "StructuredDocumentation", + "src": "11023:320:10", + "text": " @dev Safely mints `tokenId` and transfers it to `to`.\n Requirements:\nd*\n - `tokenId` must not exist.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "id": 2419, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2407, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2419, + "src": "11367:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2406, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11367:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2409, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2419, + "src": "11379:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2408, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11379:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11366:29:10" + }, + "returnParameters": { + "id": 2411, + "nodeType": "ParameterList", + "parameters": [], + "src": "11413:0:10" + }, + "scope": 2775, + "src": "11348:108:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2447, + "nodeType": "Block", + "src": "11762:162:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2430, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2422, + "src": "11778:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2431, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "11782:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2429, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2507, + "src": "11772:5:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11772:18:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2433, + "nodeType": "ExpressionStatement", + "src": "11772:18:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2438, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11839:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "11831:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2436, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11831:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11831:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2440, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2422, + "src": "11843:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2441, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2424, + "src": "11847:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2442, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2426, + "src": "11856:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2435, + "name": "_checkOnERC721Received", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2739, + "src": "11808:22:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11808:54:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "11864:52:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "id": 2434, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "11800:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11800:117:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2446, + "nodeType": "ExpressionStatement", + "src": "11800:117:10" + } + ] + }, + "documentation": { + "id": 2420, + "nodeType": "StructuredDocumentation", + "src": "11462:210:10", + "text": " @dev Same as {xref-ERC721-_safeMint-address-uint256-}[`_safeMint`], with an additional `data` parameter which is\n forwarded in {IERC721Receiver-onERC721Received} to contract recipients." + }, + "id": 2448, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_safeMint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2427, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2422, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2448, + "src": "11696:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2421, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11696:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2424, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2448, + "src": "11708:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2423, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11708:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2426, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2448, + "src": "11725:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2425, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11725:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11695:49:10" + }, + "returnParameters": { + "id": 2428, + "nodeType": "ParameterList", + "parameters": [], + "src": "11762:0:10" + }, + "scope": 2775, + "src": "11677:247:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2506, + "nodeType": "Block", + "src": "12307:332:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2457, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2451, + "src": "12325:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2460, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12339:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2459, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12331:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2458, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12331:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12331:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "12325:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a206d696e7420746f20746865207a65726f2061646472657373", + "id": 2463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12343:34:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "typeString": "literal_string \"ERC721: mint to the zero address\"" + }, + "value": "ERC721: mint to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8a66f4bb6512ffbfcc3db9b42318eb65f26ac15163eaa9a1e5cfa7bee9d1c7c6", + "typeString": "literal_string \"ERC721: mint to the zero address\"" + } + ], + "id": 2456, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12317:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12317:61:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2465, + "nodeType": "ExpressionStatement", + "src": "12317:61:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2470, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "12396:17:10", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2468, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "12405:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2467, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "12397:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 2469, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12397:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a20746f6b656e20616c7265616479206d696e746564", + "id": 2471, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12415:30:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "typeString": "literal_string \"ERC721: token already minted\"" + }, + "value": "ERC721: token already minted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2a63ce106ef95058ed21fd07c42a10f11dc5c32ac13a4e847923f7759f635d57", + "typeString": "literal_string \"ERC721: token already minted\"" + } + ], + "id": 2466, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "12388:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12388:58:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2473, + "nodeType": "ExpressionStatement", + "src": "12388:58:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12486:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2476, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12478:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12478:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12478:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2479, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2451, + "src": "12490:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2480, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "12494:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2474, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2774, + "src": "12457:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2481, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12457:45:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2482, + "nodeType": "ExpressionStatement", + "src": "12457:45:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2487, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "12535:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2483, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "12513:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 2485, + "indexExpression": { + "argumentTypes": null, + "id": 2484, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2451, + "src": "12527:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "12513:17:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 2486, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 4263, + "src": "12513:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$4243_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 2488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12513:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2489, + "nodeType": "ExpressionStatement", + "src": "12513:30:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2493, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "12571:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2494, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2451, + "src": "12580:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2490, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "12554:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2492, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 3652, + "src": "12554:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 2495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12554:29:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2496, + "nodeType": "ExpressionStatement", + "src": "12554:29:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12616:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "12608:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2498, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12608:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12608:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2502, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2451, + "src": "12620:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2503, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2453, + "src": "12624:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2497, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2790, + "src": "12599:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2504, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12599:33:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2505, + "nodeType": "EmitStatement", + "src": "12594:38:10" + } + ] + }, + "documentation": { + "id": 2449, + "nodeType": "StructuredDocumentation", + "src": "11930:311:10", + "text": " @dev Mints `tokenId` and transfers it to `to`.\n WARNING: Usage of this method is discouraged, use {_safeMint} whenever possible\n Requirements:\n - `tokenId` must not exist.\n - `to` cannot be the zero address.\n Emits a {Transfer} event." + }, + "id": 2507, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2451, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2507, + "src": "12261:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12261:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2453, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2507, + "src": "12273:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2452, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12273:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12260:29:10" + }, + "returnParameters": { + "id": 2455, + "nodeType": "ParameterList", + "parameters": [], + "src": "12307:0:10" + }, + "scope": 2775, + "src": "12246:393:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2575, + "nodeType": "Block", + "src": "12905:478:10", + "statements": [ + { + "assignments": [ + 2514 + ], + "declarations": [ + { + "constant": false, + "id": 2514, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2575, + "src": "12915:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2513, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12915:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2519, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2517, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "12946:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2515, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "12931:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1979, + "src": "12931:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12931:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "12915:39:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2521, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2514, + "src": "13004:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2524, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13019:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2523, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13011:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2522, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13011:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13011:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2526, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13023:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2520, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2774, + "src": "12983:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12983:48:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2528, + "nodeType": "ExpressionStatement", + "src": "12983:48:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13086:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13078:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2530, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13078:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13078:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2534, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13090:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2529, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2763, + "src": "13069:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2535, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13069:29:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2536, + "nodeType": "ExpressionStatement", + "src": "13069:29:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2545, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2539, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "13154:10:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2541, + "indexExpression": { + "argumentTypes": null, + "id": 2540, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13165:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13154:19:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + ], + "id": 2538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13148:5:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 2537, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13148:5:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13148:26:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "id": 2543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "13148:33:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2544, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13185:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "13148:38:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2552, + "nodeType": "IfStatement", + "src": "13144:95:10", + "trueBody": { + "id": 2551, + "nodeType": "Block", + "src": "13188:51:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "13202:26:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2546, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "13209:10:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2548, + "indexExpression": { + "argumentTypes": null, + "id": 2547, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13220:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "13209:19:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2550, + "nodeType": "ExpressionStatement", + "src": "13202:26:10" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2557, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13277:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2553, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "13249:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 2555, + "indexExpression": { + "argumentTypes": null, + "id": 2554, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2514, + "src": "13263:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "13249:20:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 2556, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4283, + "src": "13249:27:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$4243_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 2558, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13249:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2559, + "nodeType": "ExpressionStatement", + "src": "13249:36:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2563, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13316:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2560, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "13296:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2562, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 3672, + "src": "13296:19:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256) returns (bool)" + } + }, + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13296:28:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2565, + "nodeType": "ExpressionStatement", + "src": "13296:28:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2567, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2514, + "src": "13349:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13364:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2569, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13356:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2568, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13356:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2571, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13356:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2572, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2510, + "src": "13368:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2566, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2790, + "src": "13340:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13340:36:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2574, + "nodeType": "EmitStatement", + "src": "13335:41:10" + } + ] + }, + "documentation": { + "id": 2508, + "nodeType": "StructuredDocumentation", + "src": "12645:206:10", + "text": " @dev Destroys `tokenId`.\n The approval is cleared when the token is burned.\n Requirements:\n - `tokenId` must exist.\n Emits a {Transfer} event." + }, + "id": 2576, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2511, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2510, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2576, + "src": "12871:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2509, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12871:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12870:17:10" + }, + "returnParameters": { + "id": 2512, + "nodeType": "ParameterList", + "parameters": [], + "src": "12905:0:10" + }, + "scope": 2775, + "src": "12856:527:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2647, + "nodeType": "Block", + "src": "13786:505:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2589, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "13819:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2587, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "13804:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1979, + "src": "13804:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13804:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2591, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "13831:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "13804:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e", + "id": 2593, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13837:43:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", + "typeString": "literal_string \"ERC721: transfer of token that is not own\"" + }, + "value": "ERC721: transfer of token that is not own" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a01073130a885d6c1c1af6ac75fc3b1c4f9403c235362962bbf528e2bd87d950", + "typeString": "literal_string \"ERC721: transfer of token that is not own\"" + } + ], + "id": 2586, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13796:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13796:85:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2595, + "nodeType": "ExpressionStatement", + "src": "13796:85:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2602, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2597, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "13917:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13931:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2599, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13923:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2598, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13923:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2601, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13923:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "13917:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f20746865207a65726f2061646472657373", + "id": 2603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13935:38:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "typeString": "literal_string \"ERC721: transfer to the zero address\"" + }, + "value": "ERC721: transfer to the zero address" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_455fea98ea03c32d7dd1a6f1426917d80529bf47b3ccbde74e7206e889e709f4", + "typeString": "literal_string \"ERC721: transfer to the zero address\"" + } + ], + "id": 2596, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "13909:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13909:65:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2605, + "nodeType": "ExpressionStatement", + "src": "13909:65:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2607, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "14006:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2608, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "14012:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2609, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14016:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2606, + "name": "_beforeTokenTransfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2774, + "src": "13985:20:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13985:39:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2611, + "nodeType": "ExpressionStatement", + "src": "13985:39:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2615, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14103:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "14095:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2613, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14095:7:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2616, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14095:10:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2617, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14107:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2612, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2763, + "src": "14086:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 2618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14086:29:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2619, + "nodeType": "ExpressionStatement", + "src": "14086:29:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2624, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14153:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2620, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "14126:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 2622, + "indexExpression": { + "argumentTypes": null, + "id": 2621, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "14140:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14126:19:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 2623, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "remove", + "nodeType": "MemberAccess", + "referencedDeclaration": 4283, + "src": "14126:26:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$4243_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 2625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14126:35:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2626, + "nodeType": "ExpressionStatement", + "src": "14126:35:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2631, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14193:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2627, + "name": "_holderTokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1877, + "src": "14171:13:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_UintSet_$4243_storage_$", + "typeString": "mapping(address => struct EnumerableSet.UintSet storage ref)" + } + }, + "id": 2629, + "indexExpression": { + "argumentTypes": null, + "id": 2628, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "14185:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14171:17:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage", + "typeString": "struct EnumerableSet.UintSet storage ref" + } + }, + "id": 2630, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 4263, + "src": "14171:21:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintSet_$4243_storage_ptr_$_t_uint256_$returns$_t_bool_$bound_to$_t_struct$_UintSet_$4243_storage_ptr_$", + "typeString": "function (struct EnumerableSet.UintSet storage pointer,uint256) returns (bool)" + } + }, + "id": 2632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14171:30:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2633, + "nodeType": "ExpressionStatement", + "src": "14171:30:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2637, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14229:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2638, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "14238:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 2634, + "name": "_tokenOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1879, + "src": "14212:12:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage", + "typeString": "struct EnumerableMap.UintToAddressMap storage ref" + } + }, + "id": 2636, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "set", + "nodeType": "MemberAccess", + "referencedDeclaration": 3652, + "src": "14212:16:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_UintToAddressMap_$3620_storage_ptr_$_t_uint256_$_t_address_$returns$_t_bool_$bound_to$_t_struct$_UintToAddressMap_$3620_storage_ptr_$", + "typeString": "function (struct EnumerableMap.UintToAddressMap storage pointer,uint256,address) returns (bool)" + } + }, + "id": 2639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14212:29:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2640, + "nodeType": "ExpressionStatement", + "src": "14212:29:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2642, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2579, + "src": "14266:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2643, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2581, + "src": "14272:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2644, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2583, + "src": "14276:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2641, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2790, + "src": "14257:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2645, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14257:27:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2646, + "nodeType": "EmitStatement", + "src": "14252:32:10" + } + ] + }, + "documentation": { + "id": 2577, + "nodeType": "StructuredDocumentation", + "src": "13389:313:10", + "text": " @dev Transfers `tokenId` from `from` to `to`.\n As opposed to {transferFrom}, this imposes no restrictions on msg.sender.\n Requirements:\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n Emits a {Transfer} event." + }, + "id": 2648, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2584, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2579, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2648, + "src": "13726:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13726:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2581, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2648, + "src": "13740:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2580, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13740:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2583, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2648, + "src": "13752:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2582, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13752:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13725:43:10" + }, + "returnParameters": { + "id": 2585, + "nodeType": "ParameterList", + "parameters": [], + "src": "13786:0:10" + }, + "scope": 2775, + "src": "13707:584:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2669, + "nodeType": "Block", + "src": "14519:131:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2658, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2651, + "src": "14545:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2657, + "name": "_exists", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2362, + "src": "14537:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_bool_$", + "typeString": "function (uint256) view returns (bool)" + } + }, + "id": 2659, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14537:16:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732314d657461646174613a2055524920736574206f66206e6f6e6578697374656e7420746f6b656e", + "id": 2660, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14555:46:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + }, + "value": "ERC721Metadata: URI set of nonexistent token" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_94be4a260caaeac1b145f03ffa2e70bc612b64982d04f24073aaf3a5f9009978", + "typeString": "literal_string \"ERC721Metadata: URI set of nonexistent token\"" + } + ], + "id": 2656, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "14529:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 2661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14529:73:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2662, + "nodeType": "ExpressionStatement", + "src": "14529:73:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 2667, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2663, + "name": "_tokenURIs", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1897, + "src": "14612:10:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_string_storage_$", + "typeString": "mapping(uint256 => string storage ref)" + } + }, + "id": 2665, + "indexExpression": { + "argumentTypes": null, + "id": 2664, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2651, + "src": "14623:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14612:19:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2666, + "name": "_tokenURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2653, + "src": "14634:9:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "14612:31:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2668, + "nodeType": "ExpressionStatement", + "src": "14612:31:10" + } + ] + }, + "documentation": { + "id": 2649, + "nodeType": "StructuredDocumentation", + "src": "14297:136:10", + "text": " @dev Sets `_tokenURI` as the tokenURI of `tokenId`.\n Requirements:\n - `tokenId` must exist." + }, + "id": 2670, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setTokenURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2654, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2651, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2670, + "src": "14460:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2650, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "14460:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2653, + "mutability": "mutable", + "name": "_tokenURI", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2670, + "src": "14477:23:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2652, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14477:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14459:42:10" + }, + "returnParameters": { + "id": 2655, + "nodeType": "ParameterList", + "parameters": [], + "src": "14519:0:10" + }, + "scope": 2775, + "src": "14438:212:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2680, + "nodeType": "Block", + "src": "14935:36:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2676, + "name": "_baseURI", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1899, + "src": "14945:8:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2677, + "name": "baseURI_", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2673, + "src": "14956:8:10", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "14945:19:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 2679, + "nodeType": "ExpressionStatement", + "src": "14945:19:10" + } + ] + }, + "documentation": { + "id": 2671, + "nodeType": "StructuredDocumentation", + "src": "14656:212:10", + "text": " @dev Internal function to set the base URI for all token IDs. It is\n automatically added as a prefix to the value returned in {tokenURI},\n or to the token ID if {tokenURI} is empty." + }, + "id": 2681, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_setBaseURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2674, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2673, + "mutability": "mutable", + "name": "baseURI_", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2681, + "src": "14894:22:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2672, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "14894:6:10", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14893:24:10" + }, + "returnParameters": { + "id": 2675, + "nodeType": "ParameterList", + "parameters": [], + "src": "14935:0:10" + }, + "scope": 2775, + "src": "14873:98:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2738, + "nodeType": "Block", + "src": "15654:459:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 2698, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "15668:16:10", + "subExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "id": 2695, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "15669:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isContract", + "nodeType": "MemberAccess", + "referencedDeclaration": 2987, + "src": "15669:13:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$bound_to$_t_address_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 2697, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15669:15:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2702, + "nodeType": "IfStatement", + "src": "15664:58:10", + "trueBody": { + "id": 2701, + "nodeType": "Block", + "src": "15686:36:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2699, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15707:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2694, + "id": 2700, + "nodeType": "Return", + "src": "15700:11:10" + } + ] + } + }, + { + "assignments": [ + 2704 + ], + "declarations": [ + { + "constant": false, + "id": 2704, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2738, + "src": "15731:23:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2703, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15731:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2722, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2710, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "15825:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 2709, + "name": "IERC721Receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2967, + "src": "15809:15:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC721Receiver_$2967_$", + "typeString": "type(contract IERC721Receiver)" + } + }, + "id": 2711, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15809:19:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721Receiver_$2967", + "typeString": "contract IERC721Receiver" + } + }, + "id": 2712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC721Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 2966, + "src": "15809:36:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 2713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15809:45:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2714, + "name": "_msgSender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3274, + "src": "15868:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_payable_$", + "typeString": "function () view returns (address payable)" + } + }, + "id": 2715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15868:12:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 2716, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2684, + "src": "15894:4:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2717, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2688, + "src": "15912:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2718, + "name": "_data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2690, + "src": "15933:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 2707, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "15773:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2708, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "15773:22:10", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 2719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15773:175:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "4552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e746572", + "id": 2720, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "15950:52:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + }, + "value": "ERC721: transfer to non ERC721Receiver implementer" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_1e766a06da43a53d0f4c380e06e5a342e14d5af1bf8501996c844905530ca84e", + "typeString": "literal_string \"ERC721: transfer to non ERC721Receiver implementer\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 2705, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2686, + "src": "15757:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2706, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "functionCall", + "nodeType": "MemberAccess", + "referencedDeclaration": 3058, + "src": "15757:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$bound_to$_t_address_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 2721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "15757:246:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "15731:272:10" + }, + { + "assignments": [ + 2724 + ], + "declarations": [ + { + "constant": false, + "id": 2724, + "mutability": "mutable", + "name": "retval", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2738, + "src": "16013:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2723, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "16013:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2732, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2727, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2704, + "src": "16040:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 2729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "16053:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + }, + "typeName": { + "id": 2728, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "16053:6:10", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 2730, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16052:8:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bytes4_$", + "typeString": "type(bytes4)" + } + ], + "expression": { + "argumentTypes": null, + "id": 2725, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "16029:3:10", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2726, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "16029:10:10", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 2731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16029:32:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "16013:48:10" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2733, + "name": "retval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2724, + "src": "16079:6:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2734, + "name": "_ERC721_RECEIVED", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1873, + "src": "16089:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "16079:26:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 2736, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "16078:28:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2694, + "id": 2737, + "nodeType": "Return", + "src": "16071:35:10" + } + ] + }, + "documentation": { + "id": 2682, + "nodeType": "StructuredDocumentation", + "src": "14977:542:10", + "text": " @dev Internal function to invoke {IERC721Receiver-onERC721Received} on a target address.\n The call is not executed if the target address is not a contract.\n @param from address representing the previous owner of the given token ID\n @param to target address that will receive the tokens\n @param tokenId uint256 ID of the token to be transferred\n @param _data bytes optional data to send along with the call\n @return bool whether the call correctly returned the expected magic value" + }, + "id": 2739, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_checkOnERC721Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2691, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2684, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2739, + "src": "15556:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2683, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15556:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2686, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2739, + "src": "15570:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2685, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "15570:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2688, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2739, + "src": "15582:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "15582:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2690, + "mutability": "mutable", + "name": "_data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2739, + "src": "15599:18:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2689, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "15599:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15555:63:10" + }, + "returnParameters": { + "id": 2694, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2693, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2739, + "src": "15644:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2692, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "15644:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "15643:6:10" + }, + "scope": 2775, + "src": "15524:589:10", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 2762, + "nodeType": "Block", + "src": "16289:125:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 2751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2747, + "name": "_tokenApprovals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1883, + "src": "16299:15:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_address_$", + "typeString": "mapping(uint256 => address)" + } + }, + "id": 2749, + "indexExpression": { + "argumentTypes": null, + "id": 2748, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2744, + "src": "16315:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "16299:24:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2750, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2742, + "src": "16326:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "16299:29:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2752, + "nodeType": "ExpressionStatement", + "src": "16299:29:10" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2756, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2744, + "src": "16367:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 2754, + "name": "ERC721", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2775, + "src": "16352:6:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC721_$2775_$", + "typeString": "type(contract ERC721)" + } + }, + "id": 2755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "ownerOf", + "nodeType": "MemberAccess", + "referencedDeclaration": 1979, + "src": "16352:14:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_uint256_$returns$_t_address_$", + "typeString": "function (uint256) view returns (address)" + } + }, + "id": 2757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16352:23:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2758, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2742, + "src": "16377:2:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2759, + "name": "tokenId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2744, + "src": "16381:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2753, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2799, + "src": "16343:8:10", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 2760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "16343:46:10", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2761, + "nodeType": "EmitStatement", + "src": "16338:51:10" + } + ] + }, + "documentation": { + "id": 2740, + "nodeType": "StructuredDocumentation", + "src": "16119:101:10", + "text": " @dev Approve `to` to operate on `tokenId`\n Emits an {Approval} event." + }, + "id": 2763, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2745, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2742, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2763, + "src": "16243:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2741, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "16243:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2744, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2763, + "src": "16255:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2743, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "16255:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "16242:29:10" + }, + "returnParameters": { + "id": 2746, + "nodeType": "ParameterList", + "parameters": [], + "src": "16289:0:10" + }, + "scope": 2775, + "src": "16225:189:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 2773, + "nodeType": "Block", + "src": "17100:3:10", + "statements": [] + }, + "documentation": { + "id": 2764, + "nodeType": "StructuredDocumentation", + "src": "16420:585:10", + "text": " @dev Hook that is called before any token transfer. This includes minting\n and burning.\n Calling conditions:\n - When `from` and `to` are both non-zero, ``from``'s `tokenId` will be\n transferred to `to`.\n - When `from` is zero, `tokenId` will be minted for `to`.\n - When `to` is zero, ``from``'s `tokenId` will be burned.\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]." + }, + "id": 2774, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_beforeTokenTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2771, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2766, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2774, + "src": "17040:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2765, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17040:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2768, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2774, + "src": "17054:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2767, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "17054:7:10", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2770, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2774, + "src": "17066:15:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "17066:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "17039:43:10" + }, + "returnParameters": { + "id": 2772, + "nodeType": "ParameterList", + "parameters": [], + "src": "17100:0:10" + }, + "scope": 2775, + "src": "17010:93:10", + "stateMutability": "nonpayable", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 2776, + "src": "571:16534:10" + } + ], + "src": "33:17073:10" + }, + "id": 10 + }, + "@openzeppelin/contracts/token/ERC721/IERC721.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "exportedSymbols": { + "IERC721": [ + 2891 + ] + }, + "id": 2892, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2777, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:11" + }, + { + "absolutePath": "@openzeppelin/contracts/introspection/IERC165.sol", + "file": "../../introspection/IERC165.sol", + "id": 2778, + "nodeType": "ImportDirective", + "scope": 2892, + "sourceUnit": 179, + "src": "66:41:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2780, + "name": "IERC165", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 178, + "src": "198:7:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC165_$178", + "typeString": "contract IERC165" + } + }, + "id": 2781, + "nodeType": "InheritanceSpecifier", + "src": "198:7:11" + } + ], + "contractDependencies": [ + 178 + ], + "contractKind": "interface", + "documentation": { + "id": 2779, + "nodeType": "StructuredDocumentation", + "src": "109:67:11", + "text": " @dev Required interface of an ERC721 compliant contract." + }, + "fullyImplemented": false, + "id": 2891, + "linearizedBaseContracts": [ + 2891, + 178 + ], + "name": "IERC721", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": { + "id": 2782, + "nodeType": "StructuredDocumentation", + "src": "212:88:11", + "text": " @dev Emitted when `tokenId` token is transferred from `from` to `to`." + }, + "id": 2790, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 2789, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2784, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2790, + "src": "320:20:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2783, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "320:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2786, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2790, + "src": "342:18:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2785, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "342:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2788, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2790, + "src": "362:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2787, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "362:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "319:67:11" + }, + "src": "305:82:11" + }, + { + "anonymous": false, + "documentation": { + "id": 2791, + "nodeType": "StructuredDocumentation", + "src": "393:94:11", + "text": " @dev Emitted when `owner` enables `approved` to manage the `tokenId` token." + }, + "id": 2799, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 2798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2793, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2799, + "src": "507:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "507:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2795, + "indexed": true, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2799, + "src": "530:24:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "530:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2797, + "indexed": true, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2799, + "src": "556:23:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2796, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "506:74:11" + }, + "src": "492:89:11" + }, + { + "anonymous": false, + "documentation": { + "id": 2800, + "nodeType": "StructuredDocumentation", + "src": "587:117:11", + "text": " @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets." + }, + "id": 2808, + "name": "ApprovalForAll", + "nodeType": "EventDefinition", + "parameters": { + "id": 2807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2802, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2808, + "src": "730:21:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2801, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "730:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2804, + "indexed": true, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2808, + "src": "753:24:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2803, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "753:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2806, + "indexed": false, + "mutability": "mutable", + "name": "approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2808, + "src": "779:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2805, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "779:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "729:64:11" + }, + "src": "709:85:11" + }, + { + "body": null, + "documentation": { + "id": 2809, + "nodeType": "StructuredDocumentation", + "src": "800:76:11", + "text": " @dev Returns the number of tokens in ``owner``'s account." + }, + "functionSelector": "70a08231", + "id": 2816, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2811, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2816, + "src": "900:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2810, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "900:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "899:15:11" + }, + "returnParameters": { + "id": 2815, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2814, + "mutability": "mutable", + "name": "balance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2816, + "src": "938:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2813, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "938:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "937:17:11" + }, + "scope": 2891, + "src": "881:74:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2817, + "nodeType": "StructuredDocumentation", + "src": "961:131:11", + "text": " @dev Returns the owner of the `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "6352211e", + "id": 2824, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "ownerOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2820, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2819, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2824, + "src": "1114:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2818, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1114:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1113:17:11" + }, + "returnParameters": { + "id": 2823, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2822, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2824, + "src": "1154:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1154:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1153:15:11" + }, + "scope": 2891, + "src": "1097:72:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2825, + "nodeType": "StructuredDocumentation", + "src": "1175:690:11", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients\n are aware of the ERC721 protocol to prevent tokens from being forever locked.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be have been allowed to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "42842e0e", + "id": 2834, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2832, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2827, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2834, + "src": "1896:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1896:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2829, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2834, + "src": "1910:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2828, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1910:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2831, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2834, + "src": "1922:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1922:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1895:43:11" + }, + "returnParameters": { + "id": 2833, + "nodeType": "ParameterList", + "parameters": [], + "src": "1947:0:11" + }, + "scope": 2891, + "src": "1870:78:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2835, + "nodeType": "StructuredDocumentation", + "src": "1954:504:11", + "text": " @dev Transfers `tokenId` token from `from` to `to`.\n WARNING: Usage of this method is discouraged, use {safeTransferFrom} whenever possible.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n Emits a {Transfer} event." + }, + "functionSelector": "23b872dd", + "id": 2844, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2842, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2837, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "2485:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2836, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2485:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2839, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "2499:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2838, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2499:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2841, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2844, + "src": "2511:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2840, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2511:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2484:43:11" + }, + "returnParameters": { + "id": 2843, + "nodeType": "ParameterList", + "parameters": [], + "src": "2536:0:11" + }, + "scope": 2891, + "src": "2463:74:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2845, + "nodeType": "StructuredDocumentation", + "src": "2543:452:11", + "text": " @dev Gives permission to `to` to transfer `tokenId` token to another account.\n The approval is cleared when the token is transferred.\n Only a single account can be approved at a time, so approving the zero address clears previous approvals.\n Requirements:\n - The caller must own the token or be an approved operator.\n - `tokenId` must exist.\n Emits an {Approval} event." + }, + "functionSelector": "095ea7b3", + "id": 2852, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2850, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2847, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2852, + "src": "3017:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2846, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3017:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2849, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2852, + "src": "3029:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2848, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3029:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3016:29:11" + }, + "returnParameters": { + "id": 2851, + "nodeType": "ParameterList", + "parameters": [], + "src": "3054:0:11" + }, + "scope": 2891, + "src": "3000:55:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2853, + "nodeType": "StructuredDocumentation", + "src": "3061:139:11", + "text": " @dev Returns the account approved for `tokenId` token.\n Requirements:\n - `tokenId` must exist." + }, + "functionSelector": "081812fc", + "id": 2860, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "getApproved", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2856, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2855, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2860, + "src": "3226:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3226:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3225:17:11" + }, + "returnParameters": { + "id": 2859, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2858, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2860, + "src": "3266:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2857, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3266:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3265:18:11" + }, + "scope": 2891, + "src": "3205:79:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2861, + "nodeType": "StructuredDocumentation", + "src": "3290:309:11", + "text": " @dev Approve or remove `operator` as an operator for the caller.\n Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller.\n Requirements:\n - The `operator` cannot be the caller.\n Emits an {ApprovalForAll} event." + }, + "functionSelector": "a22cb465", + "id": 2868, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "setApprovalForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2863, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2868, + "src": "3631:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2862, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3631:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2865, + "mutability": "mutable", + "name": "_approved", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2868, + "src": "3649:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2864, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3649:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3630:34:11" + }, + "returnParameters": { + "id": 2867, + "nodeType": "ParameterList", + "parameters": [], + "src": "3673:0:11" + }, + "scope": 2891, + "src": "3604:70:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2869, + "nodeType": "StructuredDocumentation", + "src": "3680:138:11", + "text": " @dev Returns if the `operator` is allowed to manage all of the assets of `owner`.\n See {setApprovalForAll}" + }, + "functionSelector": "e985e9c5", + "id": 2878, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "isApprovedForAll", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2874, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2871, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2878, + "src": "3849:13:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2870, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3849:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2873, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2878, + "src": "3864:16:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2872, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3864:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3848:33:11" + }, + "returnParameters": { + "id": 2877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2876, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2878, + "src": "3905:4:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2875, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3905:4:11", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3904:6:11" + }, + "scope": 2891, + "src": "3823:88:11", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2879, + "nodeType": "StructuredDocumentation", + "src": "3917:568:11", + "text": " @dev Safely transfers `tokenId` token from `from` to `to`.\n Requirements:\n - `from` cannot be the zero address.\n - `to` cannot be the zero address.\n - `tokenId` token must exist and be owned by `from`.\n - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}.\n - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer.\n Emits a {Transfer} event." + }, + "functionSelector": "b88d4fde", + "id": 2890, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2888, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2881, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2890, + "src": "4516:12:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2880, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4516:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2883, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2890, + "src": "4530:10:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2882, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4530:7:11", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2885, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2890, + "src": "4542:15:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2884, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4542:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2887, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2890, + "src": "4559:19:11", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2886, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4559:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4515:64:11" + }, + "returnParameters": { + "id": 2889, + "nodeType": "ParameterList", + "parameters": [], + "src": "4588:0:11" + }, + "scope": 2891, + "src": "4490:99:11", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2892, + "src": "177:4414:11" + } + ], + "src": "33:4559:11" + }, + "id": 11 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Enumerable.sol", + "exportedSymbols": { + "IERC721Enumerable": [ + 2922 + ] + }, + "id": 2923, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2893, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:12" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 2894, + "nodeType": "ImportDirective", + "scope": 2923, + "sourceUnit": 2892, + "src": "66:23:12", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2896, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2891, + "src": "259:7:12", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2891", + "typeString": "contract IERC721" + } + }, + "id": 2897, + "nodeType": "InheritanceSpecifier", + "src": "259:7:12" + } + ], + "contractDependencies": [ + 178, + 2891 + ], + "contractKind": "interface", + "documentation": { + "id": 2895, + "nodeType": "StructuredDocumentation", + "src": "91:136:12", + "text": " @title ERC-721 Non-Fungible Token Standard, optional enumeration extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 2922, + "linearizedBaseContracts": [ + 2922, + 2891, + 178 + ], + "name": "IERC721Enumerable", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2898, + "nodeType": "StructuredDocumentation", + "src": "274:82:12", + "text": " @dev Returns the total amount of tokens stored by the contract." + }, + "functionSelector": "18160ddd", + "id": 2903, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2899, + "nodeType": "ParameterList", + "parameters": [], + "src": "381:2:12" + }, + "returnParameters": { + "id": 2902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2901, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2903, + "src": "407:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2900, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "407:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "406:9:12" + }, + "scope": 2922, + "src": "361:55:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2904, + "nodeType": "StructuredDocumentation", + "src": "422:171:12", + "text": " @dev Returns a token ID owned by `owner` at a given `index` of its token list.\n Use along with {balanceOf} to enumerate all of ``owner``'s tokens." + }, + "functionSelector": "2f745c59", + "id": 2913, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenOfOwnerByIndex", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2906, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2913, + "src": "627:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2905, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "627:7:12", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2908, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2913, + "src": "642:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2907, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "642:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "626:30:12" + }, + "returnParameters": { + "id": 2912, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2911, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2913, + "src": "680:15:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2910, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "680:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "679:17:12" + }, + "scope": 2922, + "src": "598:99:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2914, + "nodeType": "StructuredDocumentation", + "src": "703:164:12", + "text": " @dev Returns a token ID at a given `index` of all the tokens stored by the contract.\n Use along with {totalSupply} to enumerate all tokens." + }, + "functionSelector": "4f6ccce7", + "id": 2921, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenByIndex", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2917, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2916, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2921, + "src": "894:13:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2915, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "894:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "893:15:12" + }, + "returnParameters": { + "id": 2920, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2919, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2921, + "src": "932:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "932:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "931:9:12" + }, + "scope": 2922, + "src": "872:69:12", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2923, + "src": "228:715:12" + } + ], + "src": "33:911:12" + }, + "id": 12 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Metadata.sol", + "exportedSymbols": { + "IERC721Metadata": [ + 2949 + ] + }, + "id": 2950, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2924, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:13" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721.sol", + "file": "./IERC721.sol", + "id": 2925, + "nodeType": "ImportDirective", + "scope": 2950, + "sourceUnit": 2892, + "src": "66:23:13", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2927, + "name": "IERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2891, + "src": "254:7:13", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC721_$2891", + "typeString": "contract IERC721" + } + }, + "id": 2928, + "nodeType": "InheritanceSpecifier", + "src": "254:7:13" + } + ], + "contractDependencies": [ + 178, + 2891 + ], + "contractKind": "interface", + "documentation": { + "id": 2926, + "nodeType": "StructuredDocumentation", + "src": "91:133:13", + "text": " @title ERC-721 Non-Fungible Token Standard, optional metadata extension\n @dev See https://eips.ethereum.org/EIPS/eip-721" + }, + "fullyImplemented": false, + "id": 2949, + "linearizedBaseContracts": [ + 2949, + 2891, + 178 + ], + "name": "IERC721Metadata", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2929, + "nodeType": "StructuredDocumentation", + "src": "269:58:13", + "text": " @dev Returns the token collection name." + }, + "functionSelector": "06fdde03", + "id": 2934, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "name", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2930, + "nodeType": "ParameterList", + "parameters": [], + "src": "345:2:13" + }, + "returnParameters": { + "id": 2933, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2932, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2934, + "src": "371:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2931, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "371:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "370:15:13" + }, + "scope": 2949, + "src": "332:54:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2935, + "nodeType": "StructuredDocumentation", + "src": "392:60:13", + "text": " @dev Returns the token collection symbol." + }, + "functionSelector": "95d89b41", + "id": 2940, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "symbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2936, + "nodeType": "ParameterList", + "parameters": [], + "src": "472:2:13" + }, + "returnParameters": { + "id": 2939, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2938, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2940, + "src": "498:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2937, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "498:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "497:15:13" + }, + "scope": 2949, + "src": "457:56:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": { + "id": 2941, + "nodeType": "StructuredDocumentation", + "src": "519:90:13", + "text": " @dev Returns the Uniform Resource Identifier (URI) for `tokenId` token." + }, + "functionSelector": "c87b56dd", + "id": 2948, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "tokenURI", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2944, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2943, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2948, + "src": "632:15:13", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2942, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "632:7:13", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "631:17:13" + }, + "returnParameters": { + "id": 2947, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2946, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2948, + "src": "672:13:13", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 2945, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "672:6:13", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:15:13" + }, + "scope": 2949, + "src": "614:73:13", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2950, + "src": "225:464:13" + } + ], + "src": "33:657:13" + }, + "id": 13 + }, + "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol", + "exportedSymbols": { + "IERC721Receiver": [ + 2967 + ] + }, + "id": 2968, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2951, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:14" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": { + "id": 2952, + "nodeType": "StructuredDocumentation", + "src": "66:152:14", + "text": " @title ERC721 token receiver interface\n @dev Interface for any contract that wants to support safeTransfers\n from ERC721 asset contracts." + }, + "fullyImplemented": false, + "id": 2967, + "linearizedBaseContracts": [ + 2967 + ], + "name": "IERC721Receiver", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": { + "id": 2953, + "nodeType": "StructuredDocumentation", + "src": "251:485:14", + "text": " @dev Whenever an {IERC721} `tokenId` token is transferred to this contract via {IERC721-safeTransferFrom}\n by `operator` from `from`, this function is called.\n It must return its Solidity selector to confirm the token transfer.\n If any other value is returned or the interface is not implemented by the recipient, the transfer will be reverted.\n The selector can be obtained in Solidity with `IERC721.onERC721Received.selector`." + }, + "functionSelector": "150b7a02", + "id": 2966, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "onERC721Received", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2962, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2955, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2966, + "src": "767:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2954, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "767:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2957, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2966, + "src": "785:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2956, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "785:7:14", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2959, + "mutability": "mutable", + "name": "tokenId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2966, + "src": "799:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2958, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "799:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2961, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2966, + "src": "816:19:14", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2960, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "816:5:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "766:70:14" + }, + "returnParameters": { + "id": 2965, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2964, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2966, + "src": "855:6:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2963, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "855:6:14", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "854:8:14" + }, + "scope": 2967, + "src": "741:122:14", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 2968, + "src": "219:646:14" + } + ], + "src": "33:833:14" + }, + "id": 14 + }, + "@openzeppelin/contracts/utils/Address.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Address.sol", + "exportedSymbols": { + "Address": [ + 3263 + ] + }, + "id": 3264, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2969, + "literals": [ + "solidity", + ">=", + "0.6", + ".2", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:15" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 2970, + "nodeType": "StructuredDocumentation", + "src": "66:67:15", + "text": " @dev Collection of functions related to the address type" + }, + "fullyImplemented": true, + "id": 3263, + "linearizedBaseContracts": [ + 3263 + ], + "name": "Address", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2986, + "nodeType": "Block", + "src": "792:347:15", + "statements": [ + { + "assignments": [ + 2979 + ], + "declarations": [ + { + "constant": false, + "id": 2979, + "mutability": "mutable", + "name": "size", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2986, + "src": "989:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2978, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "989:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2980, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "989:12:15" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "1076:32:15", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "1078:28:15", + "value": { + "arguments": [ + { + "name": "account", + "nodeType": "YulIdentifier", + "src": "1098:7:15" + } + ], + "functionName": { + "name": "extcodesize", + "nodeType": "YulIdentifier", + "src": "1086:11:15" + }, + "nodeType": "YulFunctionCall", + "src": "1086:20:15" + }, + "variableNames": [ + { + "name": "size", + "nodeType": "YulIdentifier", + "src": "1078:4:15" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 2973, + "isOffset": false, + "isSlot": false, + "src": "1098:7:15", + "valueSize": 1 + }, + { + "declaration": 2979, + "isOffset": false, + "isSlot": false, + "src": "1078:4:15", + "valueSize": 1 + } + ], + "id": 2981, + "nodeType": "InlineAssembly", + "src": "1067:41:15" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2982, + "name": "size", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2979, + "src": "1124:4:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2983, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1131:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1124:8:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 2977, + "id": 2985, + "nodeType": "Return", + "src": "1117:15:15" + } + ] + }, + "documentation": { + "id": 2971, + "nodeType": "StructuredDocumentation", + "src": "156:565:15", + "text": " @dev Returns true if `account` is a contract.\n [IMPORTANT]\n ====\n It is unsafe to assume that an address for which this function returns\n false is an externally-owned account (EOA) and not a contract.\n Among others, `isContract` will return false for the following\n types of addresses:\n - an externally-owned account\n - a contract in construction\n - an address where a contract will be created\n - an address where a contract lived, but was destroyed\n ====" + }, + "id": 2987, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "isContract", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2974, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2973, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "746:15:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "746:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "745:17:15" + }, + "returnParameters": { + "id": 2977, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2976, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 2987, + "src": "786:4:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2975, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "786:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "785:6:15" + }, + "scope": 3263, + "src": "726:413:15", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3020, + "nodeType": "Block", + "src": "2127:320:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2998, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2153:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + ], + "id": 2997, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2145:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 2996, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2145:7:15", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 2999, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2145:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3000, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2145:21:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3001, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2992, + "src": "2170:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2145:31:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e6365", + "id": 3003, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2178:31:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + }, + "value": "Address: insufficient balance" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5597a22abd0ef5332f8053862eb236db7590f17e2b93a53f63a103becfb561f9", + "typeString": "literal_string \"Address: insufficient balance\"" + } + ], + "id": 2995, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2137:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2137:73:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3005, + "nodeType": "ExpressionStatement", + "src": "2137:73:15" + }, + { + "assignments": [ + 3007, + null + ], + "declarations": [ + { + "constant": false, + "id": 3007, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3020, + "src": "2299:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3006, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2299:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + null + ], + "id": 3014, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "", + "id": 3012, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2349:2:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "id": 3008, + "name": "recipient", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2990, + "src": "2317:9:15", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 3009, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2317:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3011, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 3010, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2992, + "src": "2340:6:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "2317:31:15", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2317:35:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2298:54:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3016, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3007, + "src": "2370:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20756e61626c6520746f2073656e642076616c75652c20726563697069656e74206d61792068617665207265766572746564", + "id": 3017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2379:60:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + }, + "value": "Address: unable to send value, recipient may have reverted" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_51ddaa38748c0a1144620fb5bfe8edab31ea437571ad591a7734bbfd0429aeae", + "typeString": "literal_string \"Address: unable to send value, recipient may have reverted\"" + } + ], + "id": 3015, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2362:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2362:78:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3019, + "nodeType": "ExpressionStatement", + "src": "2362:78:15" + } + ] + }, + "documentation": { + "id": 2988, + "nodeType": "StructuredDocumentation", + "src": "1145:906:15", + "text": " @dev Replacement for Solidity's `transfer`: sends `amount` wei to\n `recipient`, forwarding all available gas and reverting on errors.\n https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost\n of certain opcodes, possibly making contracts go over the 2300 gas limit\n imposed by `transfer`, making them unable to receive funds via\n `transfer`. {sendValue} removes this limitation.\n https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].\n IMPORTANT: because control is transferred to `recipient`, care must be\n taken to not create reentrancy vulnerabilities. Consider using\n {ReentrancyGuard} or the\n https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]." + }, + "id": 3021, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sendValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2993, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2990, + "mutability": "mutable", + "name": "recipient", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3021, + "src": "2075:25:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 2989, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2075:15:15", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2992, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3021, + "src": "2102:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2991, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2102:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2074:43:15" + }, + "returnParameters": { + "id": 2994, + "nodeType": "ParameterList", + "parameters": [], + "src": "2127:0:15" + }, + "scope": 3263, + "src": "2056:391:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3037, + "nodeType": "Block", + "src": "3277:82:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3032, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3024, + "src": "3305:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3033, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3026, + "src": "3313:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c206661696c6564", + "id": 3034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3319:32:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + }, + "value": "Address: low-level call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_24d7ab5d382116e64324f19950ca9340b8af1ddeb09a8d026e0a3c6a01dcc9df", + "typeString": "literal_string \"Address: low-level call failed\"" + } + ], + "id": 3031, + "name": "functionCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3038, + 3058 + ], + "referencedDeclaration": 3058, + "src": "3292:12:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 3035, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3292:60:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3030, + "id": 3036, + "nodeType": "Return", + "src": "3285:67:15" + } + ] + }, + "documentation": { + "id": 3022, + "nodeType": "StructuredDocumentation", + "src": "2453:730:15", + "text": " @dev Performs a Solidity function call using a low level `call`. A\n plain`call` is an unsafe replacement for a function call: use this\n function instead.\n If `target` reverts with a revert reason, it is bubbled up by this\n function (like regular Solidity function calls).\n Returns the raw returned data. To convert to the expected return value,\n use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].\n Requirements:\n - `target` must be a contract.\n - calling `target` with `data` must not revert.\n _Available since v3.1._" + }, + "id": 3038, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3024, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3038, + "src": "3210:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3210:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3026, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3038, + "src": "3226:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3025, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3226:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3209:35:15" + }, + "returnParameters": { + "id": 3030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3029, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3038, + "src": "3263:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3028, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3263:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3262:14:15" + }, + "scope": 3263, + "src": "3188:171:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3057, + "nodeType": "Block", + "src": "3698:76:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3051, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3041, + "src": "3737:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3052, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3043, + "src": "3745:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3053, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3751:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 3054, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3045, + "src": "3754:12:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3050, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3078, + 3128 + ], + "referencedDeclaration": 3128, + "src": "3715:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 3055, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3715:52:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3049, + "id": 3056, + "nodeType": "Return", + "src": "3708:59:15" + } + ] + }, + "documentation": { + "id": 3039, + "nodeType": "StructuredDocumentation", + "src": "3365:211:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with\n `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3058, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3041, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3058, + "src": "3603:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3040, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3603:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3043, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3058, + "src": "3619:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3042, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3619:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3045, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3058, + "src": "3638:26:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3044, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3638:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3602:63:15" + }, + "returnParameters": { + "id": 3049, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3048, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3058, + "src": "3684:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3047, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3684:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3683:14:15" + }, + "scope": 3263, + "src": "3581:193:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3077, + "nodeType": "Block", + "src": "4249:111:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3071, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3061, + "src": "4288:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3072, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3063, + "src": "4296:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3073, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3065, + "src": "4302:5:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564", + "id": 3074, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4309:43:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + }, + "value": "Address: low-level call with value failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_88a4a0b5e975840320a0475d4027005235904fdb5ece94df156f3d717cb2dbfc", + "typeString": "literal_string \"Address: low-level call with value failed\"" + } + ], + "id": 3070, + "name": "functionCallWithValue", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3078, + 3128 + ], + "referencedDeclaration": 3128, + "src": "4266:21:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,uint256,string memory) returns (bytes memory)" + } + }, + "id": 3075, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4266:87:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3069, + "id": 3076, + "nodeType": "Return", + "src": "4259:94:15" + } + ] + }, + "documentation": { + "id": 3059, + "nodeType": "StructuredDocumentation", + "src": "3780:351:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but also transferring `value` wei to `target`.\n Requirements:\n - the calling contract must have an ETH balance of at least `value`.\n - the called Solidity function must be `payable`.\n _Available since v3.1._" + }, + "id": 3078, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3066, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3061, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3078, + "src": "4167:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3060, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4167:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3063, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3078, + "src": "4183:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3062, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4183:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3065, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3078, + "src": "4202:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3064, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4202:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4166:50:15" + }, + "returnParameters": { + "id": 3069, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3068, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3078, + "src": "4235:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3067, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4235:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4234:14:15" + }, + "scope": 3263, + "src": "4136:224:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3127, + "nodeType": "Block", + "src": "4749:382:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3095, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "4775:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Address_$3263", + "typeString": "library Address" + } + ], + "id": 3094, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4767:7:15", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4767:7:15", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3096, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4767:13:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3097, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4767:21:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 3098, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3085, + "src": "4792:5:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4767:30:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c", + "id": 3100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4799:40:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + }, + "value": "Address: insufficient balance for call" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_565f1a77334fc4792800921178c71e4521acffab18ff9e7885b49377ee80ab4c", + "typeString": "literal_string \"Address: insufficient balance for call\"" + } + ], + "id": 3092, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4759:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:81:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3102, + "nodeType": "ExpressionStatement", + "src": "4759:81:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3105, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3081, + "src": "4869:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3104, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "4858:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3106, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4858:18:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3107, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4878:31:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + }, + "value": "Address: call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cc2e4e38850b7c0a3e942cfed89b71c77302df25bcb2ec297a0c4ff9ff6b90ad", + "typeString": "literal_string \"Address: call to non-contract\"" + } + ], + "id": 3103, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4850:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3108, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4850:60:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3109, + "nodeType": "ExpressionStatement", + "src": "4850:60:15" + }, + { + "assignments": [ + 3111, + 3113 + ], + "declarations": [ + { + "constant": false, + "id": 3111, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3127, + "src": "4981:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3110, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4981:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3113, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3127, + "src": "4995:23:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3112, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4995:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3120, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3118, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3083, + "src": "5050:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3114, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3081, + "src": "5022:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5022:11:15", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "names": [ + "value" + ], + "nodeType": "FunctionCallOptions", + "options": [ + { + "argumentTypes": null, + "id": 3116, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3085, + "src": "5042:5:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "src": "5022:27:15", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 3119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5022:33:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4980:75:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3122, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3111, + "src": "5090:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3123, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3113, + "src": "5099:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3124, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3087, + "src": "5111:12:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3121, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3262, + "src": "5072:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5072:52:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3091, + "id": 3126, + "nodeType": "Return", + "src": "5065:59:15" + } + ] + }, + "documentation": { + "id": 3079, + "nodeType": "StructuredDocumentation", + "src": "4366:237:15", + "text": " @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but\n with `errorMessage` as a fallback revert reason when `target` reverts.\n _Available since v3.1._" + }, + "id": 3128, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionCallWithValue", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3088, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3081, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3128, + "src": "4639:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3080, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4639:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3083, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3128, + "src": "4655:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3082, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4655:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3085, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3128, + "src": "4674:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3084, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4674:7:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3087, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3128, + "src": "4689:26:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3086, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "4689:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4638:78:15" + }, + "returnParameters": { + "id": 3091, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3090, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3128, + "src": "4735:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3089, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4735:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4734:14:15" + }, + "scope": 3263, + "src": "4608:523:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3144, + "nodeType": "Block", + "src": "5408:97:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3139, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3131, + "src": "5444:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3140, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3133, + "src": "5452:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c207374617469632063616c6c206661696c6564", + "id": 3141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5458:39:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", + "typeString": "literal_string \"Address: low-level static call failed\"" + }, + "value": "Address: low-level static call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_90ec82aa826a536a4cbfae44ecfa384680faa9a4b77344bce96aa761ad904df0", + "typeString": "literal_string \"Address: low-level static call failed\"" + } + ], + "id": 3138, + "name": "functionStaticCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3145, + 3180 + ], + "referencedDeclaration": 3180, + "src": "5425:18:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) view returns (bytes memory)" + } + }, + "id": 3142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5425:73:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3137, + "id": 3143, + "nodeType": "Return", + "src": "5418:80:15" + } + ] + }, + "documentation": { + "id": 3129, + "nodeType": "StructuredDocumentation", + "src": "5137:166:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3145, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3134, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3131, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "5336:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3130, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5336:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3133, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "5352:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3132, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5352:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5335:35:15" + }, + "returnParameters": { + "id": 3137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3136, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3145, + "src": "5394:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3135, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5394:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5393:14:15" + }, + "scope": 3263, + "src": "5308:197:15", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3179, + "nodeType": "Block", + "src": "5817:288:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3159, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "5846:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3158, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "5835:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5835:18:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a207374617469632063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3161, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5855:38:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", + "typeString": "literal_string \"Address: static call to non-contract\"" + }, + "value": "Address: static call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c79cc78e4f16ce3933a42b84c73868f93bb4a59c031a0acf576679de98c608a9", + "typeString": "literal_string \"Address: static call to non-contract\"" + } + ], + "id": 3157, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5827:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3162, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5827:67:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3163, + "nodeType": "ExpressionStatement", + "src": "5827:67:15" + }, + { + "assignments": [ + 3165, + 3167 + ], + "declarations": [ + { + "constant": false, + "id": 3165, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3179, + "src": "5965:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3164, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5965:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3167, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3179, + "src": "5979:23:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3166, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5979:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3172, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3170, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3150, + "src": "6024:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3168, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3148, + "src": "6006:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6006:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 3171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6006:23:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5964:65:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3174, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3165, + "src": "6064:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3175, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3167, + "src": "6073:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3176, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3152, + "src": "6085:12:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3173, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3262, + "src": "6046:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6046:52:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3156, + "id": 3178, + "nodeType": "Return", + "src": "6039:59:15" + } + ] + }, + "documentation": { + "id": 3146, + "nodeType": "StructuredDocumentation", + "src": "5511:173:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a static call.\n _Available since v3.3._" + }, + "id": 3180, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionStaticCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3153, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3148, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3180, + "src": "5717:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3147, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5717:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3150, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3180, + "src": "5733:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3149, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5733:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3152, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3180, + "src": "5752:26:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3151, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "5752:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5716:63:15" + }, + "returnParameters": { + "id": 3156, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3155, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3180, + "src": "5803:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3154, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5803:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5802:14:15" + }, + "scope": 3263, + "src": "5689:416:15", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3196, + "nodeType": "Block", + "src": "6381:101:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3191, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3183, + "src": "6419:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 3192, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3185, + "src": "6427:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564", + "id": 3193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6433:41:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + }, + "value": "Address: low-level delegate call failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_stringliteral_9fdcd12e4b726339b32a442b0a448365d5d85c96b2d2cff917b4f66c63110398", + "typeString": "literal_string \"Address: low-level delegate call failed\"" + } + ], + "id": 3190, + "name": "functionDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3197, + 3232 + ], + "referencedDeclaration": 3232, + "src": "6398:20:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address,bytes memory,string memory) returns (bytes memory)" + } + }, + "id": 3194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6398:77:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3189, + "id": 3195, + "nodeType": "Return", + "src": "6391:84:15" + } + ] + }, + "documentation": { + "id": 3181, + "nodeType": "StructuredDocumentation", + "src": "6111:168:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3197, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3183, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3197, + "src": "6314:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6314:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3185, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3197, + "src": "6330:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3184, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6330:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6313:35:15" + }, + "returnParameters": { + "id": 3189, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3188, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3197, + "src": "6367:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3187, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6367:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6366:14:15" + }, + "scope": 3263, + "src": "6284:198:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3231, + "nodeType": "Block", + "src": "6793:292:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3211, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "6822:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3210, + "name": "isContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2987, + "src": "6811:10:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view returns (bool)" + } + }, + "id": 3212, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6811:18:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6e7472616374", + "id": 3213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6831:40:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + }, + "value": "Address: delegate call to non-contract" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b94ded0918034cf8f896e19fa3cfdef1188cd569c577264a3622e49152f88520", + "typeString": "literal_string \"Address: delegate call to non-contract\"" + } + ], + "id": 3209, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6803:7:15", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6803:69:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3215, + "nodeType": "ExpressionStatement", + "src": "6803:69:15" + }, + { + "assignments": [ + 3217, + 3219 + ], + "declarations": [ + { + "constant": false, + "id": 3217, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3231, + "src": "6943:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3216, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6943:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3219, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3231, + "src": "6957:23:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3218, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6957:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3224, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3222, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3202, + "src": "7004:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "id": 3220, + "name": "target", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3200, + "src": "6984:6:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 3221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "delegatecall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6984:19:15", + "typeDescriptions": { + "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) returns (bool,bytes memory)" + } + }, + "id": 3223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6984:25:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6942:67:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3226, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3217, + "src": "7044:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3227, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3219, + "src": "7053:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 3228, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3204, + "src": "7065:12:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3225, + "name": "_verifyCallResult", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3262, + "src": "7026:17:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bool_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bool,bytes memory,string memory) pure returns (bytes memory)" + } + }, + "id": 3229, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7026:52:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3208, + "id": 3230, + "nodeType": "Return", + "src": "7019:59:15" + } + ] + }, + "documentation": { + "id": 3198, + "nodeType": "StructuredDocumentation", + "src": "6488:175:15", + "text": " @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],\n but performing a delegate call.\n _Available since v3.4._" + }, + "id": 3232, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "functionDelegateCall", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3205, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3200, + "mutability": "mutable", + "name": "target", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3232, + "src": "6698:14:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6698:7:15", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3202, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3232, + "src": "6714:17:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3201, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6714:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3204, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3232, + "src": "6733:26:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3203, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6733:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6697:63:15" + }, + "returnParameters": { + "id": 3208, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3207, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3232, + "src": "6779:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3206, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "6779:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6778:14:15" + }, + "scope": 3263, + "src": "6668:417:15", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3261, + "nodeType": "Block", + "src": "7220:596:15", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3243, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3234, + "src": "7234:7:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3259, + "nodeType": "Block", + "src": "7291:519:15", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3247, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "7375:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 3248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7375:17:15", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7395:1:15", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "7375:21:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3257, + "nodeType": "Block", + "src": "7747:53:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3254, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3238, + "src": "7772:12:15", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3253, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -19, + -19 + ], + "referencedDeclaration": -19, + "src": "7765:6:15", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 3255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7765:20:15", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3256, + "nodeType": "ExpressionStatement", + "src": "7765:20:15" + } + ] + }, + "id": 3258, + "nodeType": "IfStatement", + "src": "7371:429:15", + "trueBody": { + "id": 3252, + "nodeType": "Block", + "src": "7398:343:15", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "7582:145:15", + "statements": [ + { + "nodeType": "YulVariableDeclaration", + "src": "7604:40:15", + "value": { + "arguments": [ + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7633:10:15" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7627:5:15" + }, + "nodeType": "YulFunctionCall", + "src": "7627:17:15" + }, + "variables": [ + { + "name": "returndata_size", + "nodeType": "YulTypedName", + "src": "7608:15:15", + "type": "" + } + ] + }, + { + "expression": { + "arguments": [ + { + "arguments": [ + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7676:2:15", + "type": "", + "value": "32" + }, + { + "name": "returndata", + "nodeType": "YulIdentifier", + "src": "7680:10:15" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7672:3:15" + }, + "nodeType": "YulFunctionCall", + "src": "7672:19:15" + }, + { + "name": "returndata_size", + "nodeType": "YulIdentifier", + "src": "7693:15:15" + } + ], + "functionName": { + "name": "revert", + "nodeType": "YulIdentifier", + "src": "7665:6:15" + }, + "nodeType": "YulFunctionCall", + "src": "7665:44:15" + }, + "nodeType": "YulExpressionStatement", + "src": "7665:44:15" + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 3236, + "isOffset": false, + "isSlot": false, + "src": "7633:10:15", + "valueSize": 1 + }, + { + "declaration": 3236, + "isOffset": false, + "isSlot": false, + "src": "7680:10:15", + "valueSize": 1 + } + ], + "id": 3251, + "nodeType": "InlineAssembly", + "src": "7573:154:15" + } + ] + } + } + ] + }, + "id": 3260, + "nodeType": "IfStatement", + "src": "7230:580:15", + "trueBody": { + "id": 3246, + "nodeType": "Block", + "src": "7243:42:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3244, + "name": "returndata", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3236, + "src": "7264:10:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 3242, + "id": 3245, + "nodeType": "Return", + "src": "7257:17:15" + } + ] + } + } + ] + }, + "documentation": null, + "id": 3262, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_verifyCallResult", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3239, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3234, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3262, + "src": "7118:12:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3233, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7118:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3236, + "mutability": "mutable", + "name": "returndata", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3262, + "src": "7132:23:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3235, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7132:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3238, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3262, + "src": "7157:26:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3237, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "7157:6:15", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7117:67:15" + }, + "returnParameters": { + "id": 3242, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3241, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3262, + "src": "7206:12:15", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3240, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7206:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7205:14:15" + }, + "scope": 3263, + "src": "7091:725:15", + "stateMutability": "pure", + "virtual": false, + "visibility": "private" + } + ], + "scope": 3264, + "src": "134:7684:15" + } + ], + "src": "33:7786:15" + }, + "id": 15 + }, + "@openzeppelin/contracts/utils/Context.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Context.sol", + "exportedSymbols": { + "Context": [ + 3286 + ] + }, + "id": 3287, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3265, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:16" + }, + { + "abstract": true, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 3286, + "linearizedBaseContracts": [ + 3286 + ], + "name": "Context", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 3273, + "nodeType": "Block", + "src": "668:34:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3270, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "685:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "685:10:16", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 3269, + "id": 3272, + "nodeType": "Return", + "src": "678:17:16" + } + ] + }, + "documentation": null, + "id": 3274, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgSender", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3266, + "nodeType": "ParameterList", + "parameters": [], + "src": "617:2:16" + }, + "returnParameters": { + "id": 3269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3268, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3274, + "src": "651:15:16", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + "typeName": { + "id": 3267, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "651:15:16", + "stateMutability": "payable", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "650:17:16" + }, + "scope": 3286, + "src": "598:104:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + }, + { + "body": { + "id": 3284, + "nodeType": "Block", + "src": "773:165:16", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3279, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "783:4:16", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Context_$3286", + "typeString": "contract Context" + } + }, + "id": 3280, + "nodeType": "ExpressionStatement", + "src": "783:4:16" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3281, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "923:3:16", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 3282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "923:8:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "functionReturnParameters": 3278, + "id": 3283, + "nodeType": "Return", + "src": "916:15:16" + } + ] + }, + "documentation": null, + "id": 3285, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_msgData", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3275, + "nodeType": "ParameterList", + "parameters": [], + "src": "725:2:16" + }, + "returnParameters": { + "id": 3278, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3277, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3285, + "src": "759:12:16", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 3276, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "759:5:16", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "758:14:16" + }, + "scope": 3286, + "src": "708:230:16", + "stateMutability": "view", + "virtual": true, + "visibility": "internal" + } + ], + "scope": 3287, + "src": "566:374:16" + } + ], + "src": "33:908:16" + }, + "id": 16 + }, + "@openzeppelin/contracts/utils/EnumerableMap.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/EnumerableMap.sol", + "exportedSymbols": { + "EnumerableMap": [ + 3846 + ] + }, + "id": 3847, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3288, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:17" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3289, + "nodeType": "StructuredDocumentation", + "src": "66:705:17", + "text": " @dev Library for managing an enumerable variant of Solidity's\n https://solidity.readthedocs.io/en/latest/types.html#mapping-types[`mapping`]\n type.\n Maps have the following properties:\n - Entries are added, removed, and checked for existence in constant time\n (O(1)).\n - Entries are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableMap for EnumerableMap.UintToAddressMap;\n // Declare a set state variable\n EnumerableMap.UintToAddressMap private myMap;\n }\n ```\n As of v3.0.0, only maps of type `uint256 -> address` (`UintToAddressMap`) are\n supported." + }, + "fullyImplemented": true, + "id": 3846, + "linearizedBaseContracts": [ + 3846 + ], + "name": "EnumerableMap", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableMap.MapEntry", + "id": 3294, + "members": [ + { + "constant": false, + "id": 3291, + "mutability": "mutable", + "name": "_key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3294, + "src": "1284:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3290, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1284:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3293, + "mutability": "mutable", + "name": "_value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3294, + "src": "1306:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3292, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1306:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "MapEntry", + "nodeType": "StructDefinition", + "scope": 3846, + "src": "1258:69:17", + "visibility": "public" + }, + { + "canonicalName": "EnumerableMap.Map", + "id": 3302, + "members": [ + { + "constant": false, + "id": 3297, + "mutability": "mutable", + "name": "_entries", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3302, + "src": "1396:19:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 3295, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3294, + "src": "1396:8:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "id": 3296, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1396:10:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3301, + "mutability": "mutable", + "name": "_indexes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3302, + "src": "1565:37:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 3300, + "keyType": { + "id": 3298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1574:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1565:28:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 3299, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1585:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Map", + "nodeType": "StructDefinition", + "scope": 3846, + "src": "1333:276:17", + "visibility": "public" + }, + { + "body": { + "id": 3363, + "nodeType": "Block", + "src": "1918:596:17", + "statements": [ + { + "assignments": [ + 3315 + ], + "declarations": [ + { + "constant": false, + "id": 3315, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3363, + "src": "2026:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2026:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3320, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3316, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3305, + "src": "2045:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3317, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "2045:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3319, + "indexExpression": { + "argumentTypes": null, + "id": 3318, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3307, + "src": "2058:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2045:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2026:36:17" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3321, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3315, + "src": "2077:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2089:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2077:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3361, + "nodeType": "Block", + "src": "2416:92:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 3357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3348, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3305, + "src": "2430:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3353, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "2430:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3354, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3350, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3315, + "src": "2443:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2454:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2443:12:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2430:26:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 3355, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 3293, + "src": "2430:33:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3356, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3309, + "src": "2466:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "2430:41:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3358, + "nodeType": "ExpressionStatement", + "src": "2430:41:17" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2492:5:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3313, + "id": 3360, + "nodeType": "Return", + "src": "2485:12:17" + } + ] + }, + "id": 3362, + "nodeType": "IfStatement", + "src": "2073:435:17", + "trueBody": { + "id": 3347, + "nodeType": "Block", + "src": "2092:318:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3330, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3307, + "src": "2178:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3331, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3309, + "src": "2191:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3329, + "name": "MapEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3294, + "src": "2161:8:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_MapEntry_$3294_storage_ptr_$", + "typeString": "type(struct EnumerableMap.MapEntry storage pointer)" + } + }, + "id": 3332, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [ + "_key", + "_value" + ], + "nodeType": "FunctionCall", + "src": "2161:38:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_MapEntry_$3294_memory_ptr", + "typeString": "struct EnumerableMap.MapEntry memory" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3324, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3305, + "src": "2143:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3327, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "2143:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2143:17:17", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_struct$_MapEntry_$3294_storage_$returns$__$", + "typeString": "function (struct EnumerableMap.MapEntry storage ref)" + } + }, + "id": 3333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2143:57:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3334, + "nodeType": "ExpressionStatement", + "src": "2143:57:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 3343, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3335, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3305, + "src": "2335:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3338, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "2335:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3339, + "indexExpression": { + "argumentTypes": null, + "id": 3337, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3307, + "src": "2348:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2335:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3340, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3305, + "src": "2355:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3341, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "2355:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2355:19:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2335:39:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3344, + "nodeType": "ExpressionStatement", + "src": "2335:39:17" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2395:4:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3313, + "id": 3346, + "nodeType": "Return", + "src": "2388:11:17" + } + ] + } + } + ] + }, + "documentation": { + "id": 3303, + "nodeType": "StructuredDocumentation", + "src": "1615:216:17", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3364, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_set", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3305, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3364, + "src": "1850:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3304, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "1850:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3307, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3364, + "src": "1867:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3306, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1867:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3309, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3364, + "src": "1880:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3308, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1880:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1849:45:17" + }, + "returnParameters": { + "id": 3313, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3312, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3364, + "src": "1912:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3311, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1912:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1911:6:17" + }, + "scope": 3846, + "src": "1836:678:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3444, + "nodeType": "Block", + "src": "2752:1447:17", + "statements": [ + { + "assignments": [ + 3375 + ], + "declarations": [ + { + "constant": false, + "id": 3375, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3444, + "src": "2860:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3374, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2860:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3380, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3376, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "2879:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "2879:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3379, + "indexExpression": { + "argumentTypes": null, + "id": 3378, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3369, + "src": "2892:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2879:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2860:36:17" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3383, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3381, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "2911:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2923:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2911:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3442, + "nodeType": "Block", + "src": "4156:37:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4177:5:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3373, + "id": 3441, + "nodeType": "Return", + "src": "4170:12:17" + } + ] + }, + "id": 3443, + "nodeType": "IfStatement", + "src": "2907:1286:17", + "trueBody": { + "id": 3439, + "nodeType": "Block", + "src": "2926:1224:17", + "statements": [ + { + "assignments": [ + 3385 + ], + "declarations": [ + { + "constant": false, + "id": 3385, + "mutability": "mutable", + "name": "toDeleteIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3439, + "src": "3267:21:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3384, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3267:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3389, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3388, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3386, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3375, + "src": "3291:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3387, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3302:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3291:12:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3267:36:17" + }, + { + "assignments": [ + 3391 + ], + "declarations": [ + { + "constant": false, + "id": 3391, + "mutability": "mutable", + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3439, + "src": "3317:17:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3390, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3317:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3397, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3392, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "3337:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3393, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "3337:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3337:19:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3395, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3359:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3337:23:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3317:43:17" + }, + { + "assignments": [ + 3399 + ], + "declarations": [ + { + "constant": false, + "id": 3399, + "mutability": "mutable", + "name": "lastEntry", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3439, + "src": "3600:26:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "contractScope": null, + "id": 3398, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3294, + "src": "3600:8:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3404, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3400, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "3629:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3401, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "3629:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3403, + "indexExpression": { + "argumentTypes": null, + "id": 3402, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3391, + "src": "3642:9:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3629:23:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3600:52:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 3411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3405, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "3744:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3408, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "3744:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3409, + "indexExpression": { + "argumentTypes": null, + "id": 3407, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3385, + "src": "3757:13:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3744:27:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3410, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3399, + "src": "3774:9:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "src": "3744:39:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 3412, + "nodeType": "ExpressionStatement", + "src": "3744:39:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 3422, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3413, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "3849:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3417, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "3849:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3418, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3415, + "name": "lastEntry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3399, + "src": "3862:9:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 3416, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 3291, + "src": "3862:14:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3849:28:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3419, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3385, + "src": "3880:13:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3896:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3880:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3849:48:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3423, + "nodeType": "ExpressionStatement", + "src": "3849:48:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3424, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "4003:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3427, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "4003:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4003:16:17", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4003:18:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3430, + "nodeType": "ExpressionStatement", + "src": "4003:18:17" + }, + { + "expression": { + "argumentTypes": null, + "id": 3435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "4089:24:17", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3431, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3367, + "src": "4096:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3432, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "4096:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3434, + "indexExpression": { + "argumentTypes": null, + "id": 3433, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3369, + "src": "4109:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4096:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3436, + "nodeType": "ExpressionStatement", + "src": "4089:24:17" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3437, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4135:4:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3373, + "id": 3438, + "nodeType": "Return", + "src": "4128:11:17" + } + ] + } + } + ] + }, + "documentation": { + "id": 3365, + "nodeType": "StructuredDocumentation", + "src": "2520:157:17", + "text": " @dev Removes a key-value pair from a map. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3445, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3370, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3367, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3445, + "src": "2699:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3366, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "2699:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3369, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3445, + "src": "2716:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3368, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2716:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2698:30:17" + }, + "returnParameters": { + "id": 3373, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3372, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3445, + "src": "2746:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3371, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2746:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2745:6:17" + }, + "scope": 3846, + "src": "2682:1517:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3462, + "nodeType": "Block", + "src": "4355:46:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3455, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3448, + "src": "4372:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "4372:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3458, + "indexExpression": { + "argumentTypes": null, + "id": 3457, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3450, + "src": "4385:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4372:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3459, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4393:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4372:22:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3454, + "id": 3461, + "nodeType": "Return", + "src": "4365:29:17" + } + ] + }, + "documentation": { + "id": 3446, + "nodeType": "StructuredDocumentation", + "src": "4205:68:17", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3463, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3451, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3448, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3463, + "src": "4297:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3447, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "4297:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3450, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3463, + "src": "4314:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3449, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4314:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4296:30:17" + }, + "returnParameters": { + "id": 3454, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3453, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3463, + "src": "4349:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3452, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4349:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4348:6:17" + }, + "scope": 3846, + "src": "4278:123:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3475, + "nodeType": "Block", + "src": "4556:43:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3471, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3466, + "src": "4573:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3472, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "4573:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3473, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4573:19:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3470, + "id": 3474, + "nodeType": "Return", + "src": "4566:26:17" + } + ] + }, + "documentation": { + "id": 3464, + "nodeType": "StructuredDocumentation", + "src": "4407:79:17", + "text": " @dev Returns the number of key-value pairs in the map. O(1)." + }, + "id": 3476, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3467, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3466, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3476, + "src": "4508:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3465, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "4508:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4507:17:17" + }, + "returnParameters": { + "id": 3470, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3469, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3476, + "src": "4547:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3468, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4547:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4546:9:17" + }, + "scope": 3846, + "src": "4491:108:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3510, + "nodeType": "Block", + "src": "5027:189:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3489, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3479, + "src": "5045:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3490, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "5045:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5045:19:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 3492, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "5067:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5045:27:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e6473", + "id": 3494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5074:36:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155", + "typeString": "literal_string \"EnumerableMap: index out of bounds\"" + }, + "value": "EnumerableMap: index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_86631030b9066a18616a068fc09fce83d18af4765cb1d2166fa475228f4db155", + "typeString": "literal_string \"EnumerableMap: index out of bounds\"" + } + ], + "id": 3488, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5037:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5037:74:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3496, + "nodeType": "ExpressionStatement", + "src": "5037:74:17" + }, + { + "assignments": [ + 3498 + ], + "declarations": [ + { + "constant": false, + "id": 3498, + "mutability": "mutable", + "name": "entry", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3510, + "src": "5122:22:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + }, + "typeName": { + "contractScope": null, + "id": 3497, + "name": "MapEntry", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3294, + "src": "5122:8:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3503, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3499, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3479, + "src": "5147:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3500, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "5147:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3502, + "indexExpression": { + "argumentTypes": null, + "id": 3501, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3481, + "src": "5160:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5147:19:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5122:44:17" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3504, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3498, + "src": "5184:5:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 3505, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_key", + "nodeType": "MemberAccess", + "referencedDeclaration": 3291, + "src": "5184:10:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3506, + "name": "entry", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3498, + "src": "5196:5:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage_ptr", + "typeString": "struct EnumerableMap.MapEntry storage pointer" + } + }, + "id": 3507, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 3293, + "src": "5196:12:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3508, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5183:26:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "functionReturnParameters": 3487, + "id": 3509, + "nodeType": "Return", + "src": "5176:33:17" + } + ] + }, + "documentation": { + "id": 3477, + "nodeType": "StructuredDocumentation", + "src": "4604:333:17", + "text": " @dev Returns the key-value pair stored at position `index` in the map. O(1).\n Note that there are no guarantees on the ordering of entries inside the\n array, and it may change when more entries are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3511, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3482, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3479, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "4955:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3478, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "4955:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3481, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "4972:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3480, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4972:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4954:32:17" + }, + "returnParameters": { + "id": 3487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3484, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "5009:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3483, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5009:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3486, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3511, + "src": "5018:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3485, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5018:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5008:18:17" + }, + "scope": 3846, + "src": "4942:274:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3548, + "nodeType": "Block", + "src": "5442:220:17", + "statements": [ + { + "assignments": [ + 3524 + ], + "declarations": [ + { + "constant": false, + "id": 3524, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3548, + "src": "5452:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3523, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5452:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3529, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3525, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3514, + "src": "5471:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3526, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "5471:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3528, + "indexExpression": { + "argumentTypes": null, + "id": 3527, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3516, + "src": "5484:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5471:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5452:36:17" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3530, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "5502:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3531, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5514:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5502:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 3537, + "nodeType": "IfStatement", + "src": "5498:36:17", + "trueBody": { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5525:5:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 3534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5532:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "id": 3535, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5524:10:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_rational_0_by_1_$", + "typeString": "tuple(bool,int_const 0)" + } + }, + "functionReturnParameters": 3522, + "id": 3536, + "nodeType": "Return", + "src": "5517:17:17" + } + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3538, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5588:4:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3539, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3514, + "src": "5594:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3540, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "5594:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3544, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3543, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3541, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3524, + "src": "5607:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3542, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5618:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5607:12:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5594:26:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 3545, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 3293, + "src": "5594:33:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "id": 3546, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5587:41:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "functionReturnParameters": 3522, + "id": 3547, + "nodeType": "Return", + "src": "5580:48:17" + } + ] + }, + "documentation": { + "id": 3512, + "nodeType": "StructuredDocumentation", + "src": "5222:131:17", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map." + }, + "id": 3549, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_tryGet", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3517, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3514, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "5375:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3513, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "5375:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3516, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "5392:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3515, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5392:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5374:30:17" + }, + "returnParameters": { + "id": 3522, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3519, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "5427:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3518, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5427:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3521, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3549, + "src": "5433:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3520, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5433:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5426:15:17" + }, + "scope": 3846, + "src": "5358:304:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3581, + "nodeType": "Block", + "src": "5889:232:17", + "statements": [ + { + "assignments": [ + 3560 + ], + "declarations": [ + { + "constant": false, + "id": 3560, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3581, + "src": "5899:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3559, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5899:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3565, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3561, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3552, + "src": "5918:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3562, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "5918:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3564, + "indexExpression": { + "argumentTypes": null, + "id": 3563, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3554, + "src": "5931:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5918:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5899:36:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3569, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3567, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3560, + "src": "5953:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3568, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5965:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5953:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c654d61703a206e6f6e6578697374656e74206b6579", + "id": 3570, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5968:32:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072", + "typeString": "literal_string \"EnumerableMap: nonexistent key\"" + }, + "value": "EnumerableMap: nonexistent key" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d3551e30d3095fd81287b88f7139bb09818e34280e85ee821994ebaebbed7072", + "typeString": "literal_string \"EnumerableMap: nonexistent key\"" + } + ], + "id": 3566, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5945:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3571, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5945:56:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3572, + "nodeType": "ExpressionStatement", + "src": "5945:56:17" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3573, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3552, + "src": "6054:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3574, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "6054:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3578, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3577, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3575, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3560, + "src": "6067:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3576, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6078:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6067:12:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6054:26:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 3579, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 3293, + "src": "6054:33:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3558, + "id": 3580, + "nodeType": "Return", + "src": "6047:40:17" + } + ] + }, + "documentation": { + "id": 3550, + "nodeType": "StructuredDocumentation", + "src": "5668:141:17", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3582, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3555, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3552, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3582, + "src": "5828:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3551, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "5828:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3554, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3582, + "src": "5845:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3553, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5845:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5827:30:17" + }, + "returnParameters": { + "id": 3558, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3557, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3582, + "src": "5880:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3556, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5880:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5879:9:17" + }, + "scope": 3846, + "src": "5814:307:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3616, + "nodeType": "Block", + "src": "6506:212:17", + "statements": [ + { + "assignments": [ + 3595 + ], + "declarations": [ + { + "constant": false, + "id": 3595, + "mutability": "mutable", + "name": "keyIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3616, + "src": "6516:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3594, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6516:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3600, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3596, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "6535:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3597, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3301, + "src": "6535:12:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3599, + "indexExpression": { + "argumentTypes": null, + "id": 3598, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3587, + "src": "6548:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6535:17:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6516:36:17" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3604, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3602, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "6570:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3603, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6582:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6570:13:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "id": 3605, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3589, + "src": "6585:12:17", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3601, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6562:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 3606, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6562:36:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3607, + "nodeType": "ExpressionStatement", + "src": "6562:36:17" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3608, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3585, + "src": "6651:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map storage pointer" + } + }, + "id": 3609, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_entries", + "nodeType": "MemberAccess", + "referencedDeclaration": 3297, + "src": "6651:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_MapEntry_$3294_storage_$dyn_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref[] storage ref" + } + }, + "id": 3613, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3610, + "name": "keyIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3595, + "src": "6664:8:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6675:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6664:12:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6651:26:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_MapEntry_$3294_storage", + "typeString": "struct EnumerableMap.MapEntry storage ref" + } + }, + "id": 3614, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_value", + "nodeType": "MemberAccess", + "referencedDeclaration": 3293, + "src": "6651:33:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 3593, + "id": 3615, + "nodeType": "Return", + "src": "6644:40:17" + } + ] + }, + "documentation": { + "id": 3583, + "nodeType": "StructuredDocumentation", + "src": "6127:271:17", + "text": " @dev Same as {_get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {_tryGet}." + }, + "id": 3617, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3590, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3585, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3617, + "src": "6417:15:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3584, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "6417:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3587, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3617, + "src": "6434:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3586, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6434:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3589, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3617, + "src": "6447:26:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3588, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6447:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6416:58:17" + }, + "returnParameters": { + "id": 3593, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3592, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3617, + "src": "6497:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3591, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6497:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6496:9:17" + }, + "scope": 3846, + "src": "6403:315:17", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableMap.UintToAddressMap", + "id": 3620, + "members": [ + { + "constant": false, + "id": 3619, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3620, + "src": "6783:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + }, + "typeName": { + "contractScope": null, + "id": 3618, + "name": "Map", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3302, + "src": "6783:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage_ptr", + "typeString": "struct EnumerableMap.Map" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "UintToAddressMap", + "nodeType": "StructDefinition", + "scope": 3846, + "src": "6749:51:17", + "visibility": "public" + }, + { + "body": { + "id": 3651, + "nodeType": "Block", + "src": "7122:88:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3633, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3623, + "src": "7144:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3634, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "7144:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3637, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3625, + "src": "7164:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3636, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7156:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3635, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7156:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3638, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7156:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3645, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3627, + "src": "7194:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 3644, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7186:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3643, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7186:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7186:14:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3642, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7178:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3641, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7178:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3647, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7178:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3640, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7170:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3639, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7170:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7170:32:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3632, + "name": "_set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3364, + "src": "7139:4:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,bytes32) returns (bool)" + } + }, + "id": 3649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7139:64:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3631, + "id": 3650, + "nodeType": "Return", + "src": "7132:71:17" + } + ] + }, + "documentation": { + "id": 3621, + "nodeType": "StructuredDocumentation", + "src": "6806:216:17", + "text": " @dev Adds a key-value pair to a map, or updates the value for an existing\n key. O(1).\n Returns true if the key was added to the map, that is if it was not\n already present." + }, + "id": 3652, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "set", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3628, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3623, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3652, + "src": "7040:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3622, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "7040:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3625, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3652, + "src": "7070:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3624, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7070:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3627, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3652, + "src": "7083:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3626, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7083:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7039:58:17" + }, + "returnParameters": { + "id": 3631, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3630, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3652, + "src": "7116:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3629, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7116:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7115:6:17" + }, + "scope": 3846, + "src": "7027:183:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3671, + "nodeType": "Block", + "src": "7452:57:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3663, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3655, + "src": "7477:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3664, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "7477:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3667, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3657, + "src": "7497:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3666, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7489:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3665, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7489:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3668, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7489:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3662, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3445, + "src": "7469:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) returns (bool)" + } + }, + "id": 3669, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7469:33:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3661, + "id": 3670, + "nodeType": "Return", + "src": "7462:40:17" + } + ] + }, + "documentation": { + "id": 3653, + "nodeType": "StructuredDocumentation", + "src": "7216:148:17", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the key was removed from the map, that is if it was present." + }, + "id": 3672, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3655, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3672, + "src": "7385:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3654, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "7385:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3657, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3672, + "src": "7415:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3656, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7415:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7384:43:17" + }, + "returnParameters": { + "id": 3661, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3660, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3672, + "src": "7446:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3659, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7446:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7445:6:17" + }, + "scope": 3846, + "src": "7369:140:17", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3691, + "nodeType": "Block", + "src": "7678:59:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3683, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3675, + "src": "7705:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3684, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "7705:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3687, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3677, + "src": "7725:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3686, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7717:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3685, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7717:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7717:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3682, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3463, + "src": "7695:9:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7695:35:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3681, + "id": 3690, + "nodeType": "Return", + "src": "7688:42:17" + } + ] + }, + "documentation": { + "id": 3673, + "nodeType": "StructuredDocumentation", + "src": "7515:68:17", + "text": " @dev Returns true if the key is in the map. O(1)." + }, + "id": 3692, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3678, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3675, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3692, + "src": "7606:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3674, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "7606:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3677, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3692, + "src": "7636:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3676, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7636:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7605:43:17" + }, + "returnParameters": { + "id": 3681, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3680, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3692, + "src": "7672:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3679, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7672:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7671:6:17" + }, + "scope": 3846, + "src": "7588:149:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3705, + "nodeType": "Block", + "src": "7898:43:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3701, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3695, + "src": "7923:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3702, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "7923:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + ], + "id": 3700, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3476, + "src": "7915:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableMap.Map storage pointer) view returns (uint256)" + } + }, + "id": 3703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7915:19:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 3699, + "id": 3704, + "nodeType": "Return", + "src": "7908:26:17" + } + ] + }, + "documentation": { + "id": 3693, + "nodeType": "StructuredDocumentation", + "src": "7743:72:17", + "text": " @dev Returns the number of elements in the map. O(1)." + }, + "id": 3706, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3696, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3695, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3706, + "src": "7836:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3694, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "7836:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7835:30:17" + }, + "returnParameters": { + "id": 3699, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3698, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3706, + "src": "7889:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7889:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7888:9:17" + }, + "scope": 3846, + "src": "7820:121:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3744, + "nodeType": "Block", + "src": "8367:135:17", + "statements": [ + { + "assignments": [ + 3719, + 3721 + ], + "declarations": [ + { + "constant": false, + "id": 3719, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3744, + "src": "8378:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3718, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8378:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3721, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3744, + "src": "8391:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3720, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8391:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3727, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3723, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3709, + "src": "8412:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3724, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "8412:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "id": 3725, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3711, + "src": "8424:5:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3722, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3511, + "src": "8408:3:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$_t_uint256_$returns$_t_bytes32_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,uint256) view returns (bytes32,bytes32)" + } + }, + "id": 3726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8408:22:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bytes32_$_t_bytes32_$", + "typeString": "tuple(bytes32,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8377:53:17" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3730, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3719, + "src": "8456:3:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3729, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8448:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8448:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3731, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8448:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3738, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3721, + "src": "8486:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8478:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3736, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8478:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3739, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8478:14:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3735, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8470:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3734, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8470:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3740, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8470:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3733, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8462:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3732, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8462:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8462:32:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 3742, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8447:48:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_uint256_$_t_address_payable_$", + "typeString": "tuple(uint256,address payable)" + } + }, + "functionReturnParameters": 3717, + "id": 3743, + "nodeType": "Return", + "src": "8440:55:17" + } + ] + }, + "documentation": { + "id": 3707, + "nodeType": "StructuredDocumentation", + "src": "7946:318:17", + "text": " @dev Returns the element stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 3745, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3712, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3709, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3745, + "src": "8281:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3708, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "8281:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3711, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3745, + "src": "8311:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8311:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8280:45:17" + }, + "returnParameters": { + "id": 3717, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3714, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3745, + "src": "8349:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8349:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3716, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3745, + "src": "8358:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3715, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8358:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8348:18:17" + }, + "scope": 3846, + "src": "8269:233:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3783, + "nodeType": "Block", + "src": "8779:142:17", + "statements": [ + { + "assignments": [ + 3758, + 3760 + ], + "declarations": [ + { + "constant": false, + "id": 3758, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3783, + "src": "8790:12:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3757, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8790:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3760, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3783, + "src": "8804:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3759, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8804:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3769, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3762, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3748, + "src": "8829:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3763, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "8829:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3766, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3750, + "src": "8849:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3765, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8841:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3764, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8841:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3767, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8841:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3761, + "name": "_tryGet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3549, + "src": "8821:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$returns$_t_bool_$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bool,bytes32)" + } + }, + "id": 3768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8821:33:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes32_$", + "typeString": "tuple(bool,bytes32)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8789:65:17" + }, + { + "expression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 3770, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3758, + "src": "8872:7:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3777, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3760, + "src": "8905:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3776, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8897:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3775, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8897:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8897:14:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3774, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8889:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3773, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "8889:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3779, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8889:23:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3772, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8881:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8881:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8881:32:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "id": 3781, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "8871:43:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_address_payable_$", + "typeString": "tuple(bool,address payable)" + } + }, + "functionReturnParameters": 3756, + "id": 3782, + "nodeType": "Return", + "src": "8864:50:17" + } + ] + }, + "documentation": { + "id": 3746, + "nodeType": "StructuredDocumentation", + "src": "8508:169:17", + "text": " @dev Tries to returns the value associated with `key`. O(1).\n Does not revert if `key` is not in the map.\n _Available since v3.4._" + }, + "id": 3784, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "tryGet", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3751, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3748, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3784, + "src": "8698:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3747, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "8698:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3750, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3784, + "src": "8728:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3749, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8728:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8697:43:17" + }, + "returnParameters": { + "id": 3756, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3753, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3784, + "src": "8764:4:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3752, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8764:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3755, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3784, + "src": "8770:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3754, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8770:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8763:15:17" + }, + "scope": 3846, + "src": "8682:239:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3812, + "nodeType": "Block", + "src": "9161:81:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3801, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3787, + "src": "9207:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3802, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "9207:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3805, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3789, + "src": "9227:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3804, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9219:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3803, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9219:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9219:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3800, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3582, + 3617 + ], + "referencedDeclaration": 3582, + "src": "9202:4:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32) view returns (bytes32)" + } + }, + "id": 3807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9202:30:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3799, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9194:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3798, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9194:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9194:39:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3797, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9186:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3796, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9186:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3809, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9186:48:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3795, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9178:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3794, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9178:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3810, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9178:57:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 3793, + "id": 3811, + "nodeType": "Return", + "src": "9171:64:17" + } + ] + }, + "documentation": { + "id": 3785, + "nodeType": "StructuredDocumentation", + "src": "8927:141:17", + "text": " @dev Returns the value associated with `key`. O(1).\n Requirements:\n - `key` must be in the map." + }, + "id": 3813, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3790, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3787, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3813, + "src": "9086:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3786, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "9086:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3789, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3813, + "src": "9116:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3788, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9116:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9085:43:17" + }, + "returnParameters": { + "id": 3793, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3792, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3813, + "src": "9152:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3791, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9152:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9151:9:17" + }, + "scope": 3846, + "src": "9073:169:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 3844, + "nodeType": "Block", + "src": "9638:95:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3832, + "name": "map", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3816, + "src": "9684:3:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap storage pointer" + } + }, + "id": 3833, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 3619, + "src": "9684:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3836, + "name": "key", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3818, + "src": "9704:3:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3835, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9696:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 3834, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9696:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3837, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9696:12:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 3838, + "name": "errorMessage", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3820, + "src": "9710:12:17", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Map_$3302_storage", + "typeString": "struct EnumerableMap.Map storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 3831, + "name": "_get", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 3582, + 3617 + ], + "referencedDeclaration": 3617, + "src": "9679:4:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Map_$3302_storage_ptr_$_t_bytes32_$_t_string_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableMap.Map storage pointer,bytes32,string memory) view returns (bytes32)" + } + }, + "id": 3839, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9679:44:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3830, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9671:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 3829, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9671:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9671:53:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 3828, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9663:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 3827, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "9663:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9663:62:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 3826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9655:7:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 3825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9655:7:17", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 3842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9655:71:17", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 3824, + "id": 3843, + "nodeType": "Return", + "src": "9648:78:17" + } + ] + }, + "documentation": { + "id": 3814, + "nodeType": "StructuredDocumentation", + "src": "9248:269:17", + "text": " @dev Same as {get}, with a custom error message when `key` is not in the map.\n CAUTION: This function is deprecated because it requires allocating memory for the error\n message unnecessarily. For custom revert reasons use {tryGet}." + }, + "id": 3845, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "get", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3816, + "mutability": "mutable", + "name": "map", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3845, + "src": "9535:28:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + }, + "typeName": { + "contractScope": null, + "id": 3815, + "name": "UintToAddressMap", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3620, + "src": "9535:16:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintToAddressMap_$3620_storage_ptr", + "typeString": "struct EnumerableMap.UintToAddressMap" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3818, + "mutability": "mutable", + "name": "key", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3845, + "src": "9565:11:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3817, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9565:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3820, + "mutability": "mutable", + "name": "errorMessage", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3845, + "src": "9578:26:17", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 3819, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "9578:6:17", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9534:71:17" + }, + "returnParameters": { + "id": 3824, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3823, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3845, + "src": "9629:7:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3822, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9629:7:17", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9628:9:17" + }, + "scope": 3846, + "src": "9522:211:17", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 3847, + "src": "772:8963:17" + } + ], + "src": "33:9703:17" + }, + "id": 17 + }, + "@openzeppelin/contracts/utils/EnumerableSet.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/EnumerableSet.sol", + "exportedSymbols": { + "EnumerableSet": [ + 4338 + ] + }, + "id": 4339, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 3848, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:18" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 3849, + "nodeType": "StructuredDocumentation", + "src": "66:686:18", + "text": " @dev Library for managing\n https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive\n types.\n Sets have the following properties:\n - Elements are added, removed, and checked for existence in constant time\n (O(1)).\n - Elements are enumerated in O(n). No guarantees are made on the ordering.\n ```\n contract Example {\n // Add the library methods\n using EnumerableSet for EnumerableSet.AddressSet;\n // Declare a set state variable\n EnumerableSet.AddressSet private mySet;\n }\n ```\n As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)\n and `uint256` (`UintSet`) are supported." + }, + "fullyImplemented": true, + "id": 4338, + "linearizedBaseContracts": [ + 4338 + ], + "name": "EnumerableSet", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "EnumerableSet.Set", + "id": 3857, + "members": [ + { + "constant": false, + "id": 3852, + "mutability": "mutable", + "name": "_values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3857, + "src": "1275:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 3850, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1275:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3851, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1275:9:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3856, + "mutability": "mutable", + "name": "_indexes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3857, + "src": "1426:37:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "typeName": { + "id": 3855, + "keyType": { + "id": 3853, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1435:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "1426:28:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + }, + "valueType": { + "id": 3854, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1446:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Set", + "nodeType": "StructDefinition", + "scope": 4338, + "src": "1221:249:18", + "visibility": "public" + }, + { + "body": { + "id": 3897, + "nodeType": "Block", + "src": "1709:335:18", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 3871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1723:22:18", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3868, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3860, + "src": "1734:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + { + "argumentTypes": null, + "id": 3869, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3862, + "src": "1739:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 3867, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3996, + "src": "1724:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 3870, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1724:21:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3895, + "nodeType": "Block", + "src": "2001:37:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2022:5:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3866, + "id": 3894, + "nodeType": "Return", + "src": "2015:12:18" + } + ] + }, + "id": 3896, + "nodeType": "IfStatement", + "src": "1719:319:18", + "trueBody": { + "id": 3892, + "nodeType": "Block", + "src": "1747:248:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 3877, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3862, + "src": "1778:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3872, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3860, + "src": "1761:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3875, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "1761:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3876, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1761:16:18", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 3878, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1761:23:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3879, + "nodeType": "ExpressionStatement", + "src": "1761:23:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 3888, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3880, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3860, + "src": "1919:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3856, + "src": "1919:12:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3884, + "indexExpression": { + "argumentTypes": null, + "id": 3882, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3862, + "src": "1932:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1919:19:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3885, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3860, + "src": "1941:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3886, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "1941:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1941:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1919:40:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3889, + "nodeType": "ExpressionStatement", + "src": "1919:40:18" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1980:4:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3866, + "id": 3891, + "nodeType": "Return", + "src": "1973:11:18" + } + ] + } + } + ] + }, + "documentation": { + "id": 3858, + "nodeType": "StructuredDocumentation", + "src": "1476:159:18", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 3898, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3863, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3860, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3898, + "src": "1654:15:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 3859, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "1654:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3862, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3898, + "src": "1671:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3861, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1671:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1653:32:18" + }, + "returnParameters": { + "id": 3866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3865, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3898, + "src": "1703:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3864, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1703:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1702:6:18" + }, + "scope": 4338, + "src": "1640:404:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3977, + "nodeType": "Block", + "src": "2284:1440:18", + "statements": [ + { + "assignments": [ + 3909 + ], + "declarations": [ + { + "constant": false, + "id": 3909, + "mutability": "mutable", + "name": "valueIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3977, + "src": "2394:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3908, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2394:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3914, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3910, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "2415:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3911, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3856, + "src": "2415:12:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3913, + "indexExpression": { + "argumentTypes": null, + "id": 3912, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3903, + "src": "2428:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2415:19:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2394:40:18" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3915, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3909, + "src": "2449:10:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3916, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2463:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2449:15:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 3975, + "nodeType": "Block", + "src": "3681:37:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 3973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3702:5:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 3907, + "id": 3974, + "nodeType": "Return", + "src": "3695:12:18" + } + ] + }, + "id": 3976, + "nodeType": "IfStatement", + "src": "2445:1273:18", + "trueBody": { + "id": 3972, + "nodeType": "Block", + "src": "2466:1209:18", + "statements": [ + { + "assignments": [ + 3919 + ], + "declarations": [ + { + "constant": false, + "id": 3919, + "mutability": "mutable", + "name": "toDeleteIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3972, + "src": "2806:21:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3918, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2806:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3923, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3920, + "name": "valueIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3909, + "src": "2830:10:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3921, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2843:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2830:14:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2806:38:18" + }, + { + "assignments": [ + 3925 + ], + "declarations": [ + { + "constant": false, + "id": 3925, + "mutability": "mutable", + "name": "lastIndex", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3972, + "src": "2858:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3924, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2858:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3931, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3930, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3926, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "2878:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3927, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "2878:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2878:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2899:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2878:22:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2858:42:18" + }, + { + "assignments": [ + 3933 + ], + "declarations": [ + { + "constant": false, + "id": 3933, + "mutability": "mutable", + "name": "lastvalue", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3972, + "src": "3140:17:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3932, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3140:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 3938, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3934, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "3160:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3935, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "3160:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3937, + "indexExpression": { + "argumentTypes": null, + "id": 3936, + "name": "lastIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3925, + "src": "3172:9:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3160:22:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3140:42:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 3945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3939, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "3274:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3942, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "3274:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3943, + "indexExpression": { + "argumentTypes": null, + "id": 3941, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "3286:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3274:26:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 3944, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "3303:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "3274:38:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 3946, + "nodeType": "ExpressionStatement", + "src": "3274:38:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 3955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3947, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "3378:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3950, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3856, + "src": "3378:12:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3951, + "indexExpression": { + "argumentTypes": null, + "id": 3949, + "name": "lastvalue", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3933, + "src": "3391:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3378:23:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3954, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 3952, + "name": "toDeleteIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3919, + "src": "3404:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 3953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3420:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "3404:17:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3378:43:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 3956, + "nodeType": "ExpressionStatement", + "src": "3378:43:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3957, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "3527:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3960, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "3527:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 3961, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "pop", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3527:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 3962, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3527:17:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3963, + "nodeType": "ExpressionStatement", + "src": "3527:17:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 3968, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "delete", + "prefix": true, + "src": "3612:26:18", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3964, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3901, + "src": "3619:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3965, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3856, + "src": "3619:12:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3967, + "indexExpression": { + "argumentTypes": null, + "id": 3966, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3903, + "src": "3632:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3619:19:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 3969, + "nodeType": "ExpressionStatement", + "src": "3612:26:18" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 3970, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3660:4:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 3907, + "id": 3971, + "nodeType": "Return", + "src": "3653:11:18" + } + ] + } + } + ] + }, + "documentation": { + "id": 3899, + "nodeType": "StructuredDocumentation", + "src": "2050:157:18", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 3978, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3901, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3978, + "src": "2229:15:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 3900, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "2229:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3903, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3978, + "src": "2246:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3902, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2246:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2228:32:18" + }, + "returnParameters": { + "id": 3907, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3906, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3978, + "src": "2278:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3905, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2278:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2277:6:18" + }, + "scope": 4338, + "src": "2212:1512:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 3995, + "nodeType": "Block", + "src": "3884:48:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 3993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 3988, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3981, + "src": "3901:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 3989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_indexes", + "nodeType": "MemberAccess", + "referencedDeclaration": 3856, + "src": "3901:12:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$", + "typeString": "mapping(bytes32 => uint256)" + } + }, + "id": 3991, + "indexExpression": { + "argumentTypes": null, + "id": 3990, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3983, + "src": "3914:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3901:19:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 3992, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3924:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3901:24:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 3987, + "id": 3994, + "nodeType": "Return", + "src": "3894:31:18" + } + ] + }, + "documentation": { + "id": 3979, + "nodeType": "StructuredDocumentation", + "src": "3730:70:18", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 3996, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 3984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3981, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3996, + "src": "3824:15:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 3980, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "3824:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 3983, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3996, + "src": "3841:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 3982, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3841:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3823:32:18" + }, + "returnParameters": { + "id": 3987, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3986, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 3996, + "src": "3878:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 3985, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3878:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3877:6:18" + }, + "scope": 4338, + "src": "3805:127:18", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4008, + "nodeType": "Block", + "src": "4078:42:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4004, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3999, + "src": "4095:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4005, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "4095:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4095:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4003, + "id": 4007, + "nodeType": "Return", + "src": "4088:25:18" + } + ] + }, + "documentation": { + "id": 3997, + "nodeType": "StructuredDocumentation", + "src": "3938:70:18", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 4009, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4000, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3999, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4009, + "src": "4030:15:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 3998, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "4030:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4029:17:18" + }, + "returnParameters": { + "id": 4003, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4002, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4009, + "src": "4069:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4001, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4069:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4068:9:18" + }, + "scope": 4338, + "src": "4013:107:18", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 4033, + "nodeType": "Block", + "src": "4528:125:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4024, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4020, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4012, + "src": "4546:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4021, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "4546:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4022, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4546:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 4023, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "4567:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4546:26:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "456e756d657261626c655365743a20696e646578206f7574206f6620626f756e6473", + "id": 4025, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4574:36:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb", + "typeString": "literal_string \"EnumerableSet: index out of bounds\"" + }, + "value": "EnumerableSet: index out of bounds" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_045d6834e6193a687012a3ad777f612279e549b6945364d9d2324f48610d3cbb", + "typeString": "literal_string \"EnumerableSet: index out of bounds\"" + } + ], + "id": 4019, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "4538:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4026, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4538:73:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4027, + "nodeType": "ExpressionStatement", + "src": "4538:73:18" + }, + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4028, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4012, + "src": "4628:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set storage pointer" + } + }, + "id": 4029, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_values", + "nodeType": "MemberAccess", + "referencedDeclaration": 3852, + "src": "4628:11:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage", + "typeString": "bytes32[] storage ref" + } + }, + "id": 4031, + "indexExpression": { + "argumentTypes": null, + "id": 4030, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4014, + "src": "4640:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4628:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4018, + "id": 4032, + "nodeType": "Return", + "src": "4621:25:18" + } + ] + }, + "documentation": { + "id": 4010, + "nodeType": "StructuredDocumentation", + "src": "4125:322:18", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4034, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4015, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4012, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4034, + "src": "4465:15:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 4011, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "4465:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4014, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4034, + "src": "4482:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4013, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4482:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4464:32:18" + }, + "returnParameters": { + "id": 4018, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4017, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4034, + "src": "4519:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4016, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4519:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4518:9:18" + }, + "scope": 4338, + "src": "4452:201:18", + "stateMutability": "view", + "virtual": false, + "visibility": "private" + }, + { + "canonicalName": "EnumerableSet.Bytes32Set", + "id": 4037, + "members": [ + { + "constant": false, + "id": 4036, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4037, + "src": "4706:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 4035, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "4706:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Bytes32Set", + "nodeType": "StructDefinition", + "scope": 4338, + "src": "4678:45:18", + "visibility": "public" + }, + { + "body": { + "id": 4053, + "nodeType": "Block", + "src": "4969:47:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4048, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4040, + "src": "4991:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4049, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4036, + "src": "4991:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4050, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4042, + "src": "5003:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4047, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3898, + "src": "4986:4:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4051, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4986:23:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4046, + "id": 4052, + "nodeType": "Return", + "src": "4979:30:18" + } + ] + }, + "documentation": { + "id": 4038, + "nodeType": "StructuredDocumentation", + "src": "4729:159:18", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4054, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4043, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4040, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4054, + "src": "4906:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "contractScope": null, + "id": 4039, + "name": "Bytes32Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4037, + "src": "4906:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4042, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4054, + "src": "4930:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4041, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4930:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4905:39:18" + }, + "returnParameters": { + "id": 4046, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4045, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4054, + "src": "4963:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4044, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4963:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4962:6:18" + }, + "scope": 4338, + "src": "4893:123:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4070, + "nodeType": "Block", + "src": "5263:50:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4065, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4057, + "src": "5288:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4066, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4036, + "src": "5288:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4067, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4059, + "src": "5300:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4064, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "5280:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4068, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5280:26:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4063, + "id": 4069, + "nodeType": "Return", + "src": "5273:33:18" + } + ] + }, + "documentation": { + "id": 4055, + "nodeType": "StructuredDocumentation", + "src": "5022:157:18", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4071, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4060, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4057, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4071, + "src": "5200:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "contractScope": null, + "id": 4056, + "name": "Bytes32Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4037, + "src": "5200:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4059, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4071, + "src": "5224:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4058, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5224:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5199:39:18" + }, + "returnParameters": { + "id": 4063, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4062, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4071, + "src": "5257:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4061, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5257:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5256:6:18" + }, + "scope": 4338, + "src": "5184:129:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4087, + "nodeType": "Block", + "src": "5480:52:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4082, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4074, + "src": "5507:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4083, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4036, + "src": "5507:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4084, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4076, + "src": "5519:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4081, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3996, + "src": "5497:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5497:28:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4080, + "id": 4086, + "nodeType": "Return", + "src": "5490:35:18" + } + ] + }, + "documentation": { + "id": 4072, + "nodeType": "StructuredDocumentation", + "src": "5319:70:18", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4088, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4077, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4074, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4088, + "src": "5412:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "contractScope": null, + "id": 4073, + "name": "Bytes32Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4037, + "src": "5412:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4076, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4088, + "src": "5436:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4075, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5436:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5411:39:18" + }, + "returnParameters": { + "id": 4080, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4079, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4088, + "src": "5474:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "5474:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5473:6:18" + }, + "scope": 4338, + "src": "5394:138:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4101, + "nodeType": "Block", + "src": "5685:43:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4097, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4091, + "src": "5710:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4098, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4036, + "src": "5710:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4096, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "5702:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4099, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5702:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4095, + "id": 4100, + "nodeType": "Return", + "src": "5695:26:18" + } + ] + }, + "documentation": { + "id": 4089, + "nodeType": "StructuredDocumentation", + "src": "5538:70:18", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 4102, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4092, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4091, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4102, + "src": "5629:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "contractScope": null, + "id": 4090, + "name": "Bytes32Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4037, + "src": "5629:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5628:24:18" + }, + "returnParameters": { + "id": 4095, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4094, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4102, + "src": "5676:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4093, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5676:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5675:9:18" + }, + "scope": 4338, + "src": "5613:115:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4118, + "nodeType": "Block", + "src": "6143:46:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4113, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4105, + "src": "6164:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set storage pointer" + } + }, + "id": 4114, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4036, + "src": "6164:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4115, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4107, + "src": "6176:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4112, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4034, + "src": "6160:3:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6160:22:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 4111, + "id": 4117, + "nodeType": "Return", + "src": "6153:29:18" + } + ] + }, + "documentation": { + "id": 4103, + "nodeType": "StructuredDocumentation", + "src": "5733:322:18", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4119, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4105, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4119, + "src": "6072:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + }, + "typeName": { + "contractScope": null, + "id": 4104, + "name": "Bytes32Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4037, + "src": "6072:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Bytes32Set_$4037_storage_ptr", + "typeString": "struct EnumerableSet.Bytes32Set" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4107, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4119, + "src": "6096:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4106, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6096:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6071:39:18" + }, + "returnParameters": { + "id": 4111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4110, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4119, + "src": "6134:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4109, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6134:7:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6133:9:18" + }, + "scope": 4338, + "src": "6060:129:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.AddressSet", + "id": 4122, + "members": [ + { + "constant": false, + "id": 4121, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4122, + "src": "6242:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 4120, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "6242:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "AddressSet", + "nodeType": "StructDefinition", + "scope": 4338, + "src": "6214:45:18", + "visibility": "public" + }, + { + "body": { + "id": 4147, + "nodeType": "Block", + "src": "6505:74:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4133, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4125, + "src": "6527:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4134, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4121, + "src": "6527:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4141, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4127, + "src": "6563:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6555:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4139, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "6555:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4142, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6555:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4138, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6547:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4137, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6547:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6547:23:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6539:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4135, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6539:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6539:32:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4132, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3898, + "src": "6522:4:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6522:50:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4131, + "id": 4146, + "nodeType": "Return", + "src": "6515:57:18" + } + ] + }, + "documentation": { + "id": 4123, + "nodeType": "StructuredDocumentation", + "src": "6265:159:18", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4148, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4128, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4125, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4148, + "src": "6442:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4124, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4122, + "src": "6442:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4127, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4148, + "src": "6466:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4126, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6466:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6441:39:18" + }, + "returnParameters": { + "id": 4131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4130, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4148, + "src": "6499:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4129, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6499:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6498:6:18" + }, + "scope": 4338, + "src": "6429:150:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4173, + "nodeType": "Block", + "src": "6826:77:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4159, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4151, + "src": "6851:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4160, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4121, + "src": "6851:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4167, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4153, + "src": "6887:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6879:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4165, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "6879:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6879:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6871:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "6871:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6871:23:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6863:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4161, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6863:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6863:32:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4158, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "6843:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6843:53:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4157, + "id": 4172, + "nodeType": "Return", + "src": "6836:60:18" + } + ] + }, + "documentation": { + "id": 4149, + "nodeType": "StructuredDocumentation", + "src": "6585:157:18", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4174, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4154, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4151, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4174, + "src": "6763:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4150, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4122, + "src": "6763:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4153, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4174, + "src": "6787:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4152, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6787:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6762:39:18" + }, + "returnParameters": { + "id": 4157, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4156, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4174, + "src": "6820:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4155, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "6820:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6819:6:18" + }, + "scope": 4338, + "src": "6747:156:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4199, + "nodeType": "Block", + "src": "7070:79:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4185, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4177, + "src": "7097:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4186, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4121, + "src": "7097:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4193, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4179, + "src": "7133:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7125:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4191, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7125:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4194, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7125:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4190, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7117:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4189, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7117:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7117:23:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4188, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7109:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4187, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "7109:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7109:32:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4184, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3996, + "src": "7087:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7087:55:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4183, + "id": 4198, + "nodeType": "Return", + "src": "7080:62:18" + } + ] + }, + "documentation": { + "id": 4175, + "nodeType": "StructuredDocumentation", + "src": "6909:70:18", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4200, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4180, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4177, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4200, + "src": "7002:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4176, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4122, + "src": "7002:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4179, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4200, + "src": "7026:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4178, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7026:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7001:39:18" + }, + "returnParameters": { + "id": 4183, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4182, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4200, + "src": "7064:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4181, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "7064:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7063:6:18" + }, + "scope": 4338, + "src": "6984:165:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4213, + "nodeType": "Block", + "src": "7302:43:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4209, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4203, + "src": "7327:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4210, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4121, + "src": "7327:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4208, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "7319:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7319:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4207, + "id": 4212, + "nodeType": "Return", + "src": "7312:26:18" + } + ] + }, + "documentation": { + "id": 4201, + "nodeType": "StructuredDocumentation", + "src": "7155:70:18", + "text": " @dev Returns the number of values in the set. O(1)." + }, + "id": 4214, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4204, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4203, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4214, + "src": "7246:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4202, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4122, + "src": "7246:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7245:24:18" + }, + "returnParameters": { + "id": 4207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4206, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4214, + "src": "7293:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4205, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7293:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7292:9:18" + }, + "scope": 4338, + "src": "7230:115:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4239, + "nodeType": "Block", + "src": "7760:73:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4231, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4217, + "src": "7805:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet storage pointer" + } + }, + "id": 4232, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4121, + "src": "7805:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4233, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4219, + "src": "7817:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4230, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4034, + "src": "7801:3:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7801:22:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7793:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4228, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7793:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4235, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7793:31:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7785:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 4226, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "7785:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7785:40:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 4225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7777:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4224, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7777:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7777:49:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "functionReturnParameters": 4223, + "id": 4238, + "nodeType": "Return", + "src": "7770:56:18" + } + ] + }, + "documentation": { + "id": 4215, + "nodeType": "StructuredDocumentation", + "src": "7350:322:18", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4240, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4220, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4217, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "7689:22:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + }, + "typeName": { + "contractScope": null, + "id": 4216, + "name": "AddressSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4122, + "src": "7689:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_AddressSet_$4122_storage_ptr", + "typeString": "struct EnumerableSet.AddressSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4219, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "7713:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4218, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7713:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7688:39:18" + }, + "returnParameters": { + "id": 4223, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4222, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4240, + "src": "7751:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4221, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7751:7:18", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7750:9:18" + }, + "scope": 4338, + "src": "7677:156:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "canonicalName": "EnumerableSet.UintSet", + "id": 4243, + "members": [ + { + "constant": false, + "id": 4242, + "mutability": "mutable", + "name": "_inner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4243, + "src": "7881:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + }, + "typeName": { + "contractScope": null, + "id": 4241, + "name": "Set", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 3857, + "src": "7881:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage_ptr", + "typeString": "struct EnumerableSet.Set" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "UintSet", + "nodeType": "StructDefinition", + "scope": 4338, + "src": "7856:42:18", + "visibility": "public" + }, + { + "body": { + "id": 4262, + "nodeType": "Block", + "src": "8141:56:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4254, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4246, + "src": "8163:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4255, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4242, + "src": "8163:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4258, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4248, + "src": "8183:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4257, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8175:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4256, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8175:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8175:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4253, + "name": "_add", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3898, + "src": "8158:4:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8158:32:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4252, + "id": 4261, + "nodeType": "Return", + "src": "8151:39:18" + } + ] + }, + "documentation": { + "id": 4244, + "nodeType": "StructuredDocumentation", + "src": "7904:159:18", + "text": " @dev Add a value to a set. O(1).\n Returns true if the value was added to the set, that is if it was not\n already present." + }, + "id": 4263, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4249, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4246, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4263, + "src": "8081:19:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 4245, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "8081:7:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4248, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4263, + "src": "8102:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4247, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8102:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8080:36:18" + }, + "returnParameters": { + "id": 4252, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4251, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4263, + "src": "8135:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4250, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8135:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8134:6:18" + }, + "scope": 4338, + "src": "8068:129:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4282, + "nodeType": "Block", + "src": "8441:59:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4274, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4266, + "src": "8466:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4275, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4242, + "src": "8466:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4278, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4268, + "src": "8486:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8478:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4276, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8478:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4279, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8478:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4273, + "name": "_remove", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3978, + "src": "8458:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) returns (bool)" + } + }, + "id": 4280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8458:35:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4272, + "id": 4281, + "nodeType": "Return", + "src": "8451:42:18" + } + ] + }, + "documentation": { + "id": 4264, + "nodeType": "StructuredDocumentation", + "src": "8203:157:18", + "text": " @dev Removes a value from a set. O(1).\n Returns true if the value was removed from the set, that is if it was\n present." + }, + "id": 4283, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "remove", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4269, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4266, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4283, + "src": "8381:19:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 4265, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "8381:7:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4268, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4283, + "src": "8402:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4267, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8402:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8380:36:18" + }, + "returnParameters": { + "id": 4272, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4271, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4283, + "src": "8435:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4270, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8435:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8434:6:18" + }, + "scope": 4338, + "src": "8365:135:18", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4302, + "nodeType": "Block", + "src": "8664:61:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4294, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4286, + "src": "8691:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4295, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4242, + "src": "8691:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4298, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4288, + "src": "8711:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4297, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "8703:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes32_$", + "typeString": "type(bytes32)" + }, + "typeName": { + "id": 4296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8703:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8703:14:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4293, + "name": "_contains", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3996, + "src": "8681:9:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,bytes32) view returns (bool)" + } + }, + "id": 4300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8681:37:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 4292, + "id": 4301, + "nodeType": "Return", + "src": "8674:44:18" + } + ] + }, + "documentation": { + "id": 4284, + "nodeType": "StructuredDocumentation", + "src": "8506:70:18", + "text": " @dev Returns true if the value is in the set. O(1)." + }, + "id": 4303, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "contains", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4289, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4286, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4303, + "src": "8599:19:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 4285, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "8599:7:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4288, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4303, + "src": "8620:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4287, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8620:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8598:36:18" + }, + "returnParameters": { + "id": 4292, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4291, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4303, + "src": "8658:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 4290, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "8658:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8657:6:18" + }, + "scope": 4338, + "src": "8581:144:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4316, + "nodeType": "Block", + "src": "8875:43:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4312, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4306, + "src": "8900:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4313, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4242, + "src": "8900:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + ], + "id": 4311, + "name": "_length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4009, + "src": "8892:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$returns$_t_uint256_$", + "typeString": "function (struct EnumerableSet.Set storage pointer) view returns (uint256)" + } + }, + "id": 4314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8892:19:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4310, + "id": 4315, + "nodeType": "Return", + "src": "8885:26:18" + } + ] + }, + "documentation": { + "id": 4304, + "nodeType": "StructuredDocumentation", + "src": "8731:70:18", + "text": " @dev Returns the number of values on the set. O(1)." + }, + "id": 4317, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "length", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4307, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4306, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4317, + "src": "8822:19:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 4305, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "8822:7:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8821:21:18" + }, + "returnParameters": { + "id": 4310, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4309, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4317, + "src": "8866:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8866:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8865:9:18" + }, + "scope": 4338, + "src": "8806:112:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 4336, + "nodeType": "Block", + "src": "9330:55:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4330, + "name": "set", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4320, + "src": "9359:3:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet storage pointer" + } + }, + "id": 4331, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "_inner", + "nodeType": "MemberAccess", + "referencedDeclaration": 4242, + "src": "9359:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + } + }, + { + "argumentTypes": null, + "id": 4332, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4322, + "src": "9371:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_struct$_Set_$3857_storage", + "typeString": "struct EnumerableSet.Set storage ref" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4329, + "name": "_at", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4034, + "src": "9355:3:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_struct$_Set_$3857_storage_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (struct EnumerableSet.Set storage pointer,uint256) view returns (bytes32)" + } + }, + "id": 4333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9355:22:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9347:7:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 4327, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9347:7:18", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4334, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9347:31:18", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 4326, + "id": 4335, + "nodeType": "Return", + "src": "9340:38:18" + } + ] + }, + "documentation": { + "id": 4318, + "nodeType": "StructuredDocumentation", + "src": "8923:322:18", + "text": " @dev Returns the value stored at position `index` in the set. O(1).\n Note that there are no guarantees on the ordering of values inside the\n array, and it may change when more values are added or removed.\n Requirements:\n - `index` must be strictly less than {length}." + }, + "id": 4337, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "at", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4323, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4320, + "mutability": "mutable", + "name": "set", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4337, + "src": "9262:19:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + }, + "typeName": { + "contractScope": null, + "id": 4319, + "name": "UintSet", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 4243, + "src": "9262:7:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_UintSet_$4243_storage_ptr", + "typeString": "struct EnumerableSet.UintSet" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4322, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4337, + "src": "9283:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4321, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9283:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9261:36:18" + }, + "returnParameters": { + "id": 4326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4325, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4337, + "src": "9321:7:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4324, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9321:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9320:9:18" + }, + "scope": 4338, + "src": "9250:135:18", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4339, + "src": "753:8634:18" + } + ], + "src": "33:9355:18" + }, + "id": 18 + }, + "@openzeppelin/contracts/utils/Strings.sol": { + "ast": { + "absolutePath": "@openzeppelin/contracts/utils/Strings.sol", + "exportedSymbols": { + "Strings": [ + 4425 + ] + }, + "id": 4426, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4340, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:19" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": { + "id": 4341, + "nodeType": "StructuredDocumentation", + "src": "66:34:19", + "text": " @dev String operations." + }, + "fullyImplemented": true, + "id": 4425, + "linearizedBaseContracts": [ + 4425 + ], + "name": "Strings", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 4423, + "nodeType": "Block", + "src": "281:654:19", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4349, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4344, + "src": "483:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "492:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "483:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 4355, + "nodeType": "IfStatement", + "src": "479:51:19", + "trueBody": { + "id": 4354, + "nodeType": "Block", + "src": "495:35:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "516:3:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d", + "typeString": "literal_string \"0\"" + }, + "value": "0" + }, + "functionReturnParameters": 4348, + "id": 4353, + "nodeType": "Return", + "src": "509:10:19" + } + ] + } + }, + { + "assignments": [ + 4357 + ], + "declarations": [ + { + "constant": false, + "id": 4357, + "mutability": "mutable", + "name": "temp", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4423, + "src": "539:12:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4356, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "539:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4359, + "initialValue": { + "argumentTypes": null, + "id": 4358, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4344, + "src": "554:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "539:20:19" + }, + { + "assignments": [ + 4361 + ], + "declarations": [ + { + "constant": false, + "id": 4361, + "mutability": "mutable", + "name": "digits", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4423, + "src": "569:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4360, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "569:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4362, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "569:14:19" + }, + { + "body": { + "id": 4373, + "nodeType": "Block", + "src": "611:57:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "625:8:19", + "subExpression": { + "argumentTypes": null, + "id": 4366, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "625:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4368, + "nodeType": "ExpressionStatement", + "src": "625:8:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 4371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4369, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "647:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 4370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "655:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "647:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4372, + "nodeType": "ExpressionStatement", + "src": "647:10:19" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4365, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4363, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "600:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "608:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "600:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4374, + "nodeType": "WhileStatement", + "src": "593:75:19" + }, + { + "assignments": [ + 4376 + ], + "declarations": [ + { + "constant": false, + "id": 4376, + "mutability": "mutable", + "name": "buffer", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4423, + "src": "677:19:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4375, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "677:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4381, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4379, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "709:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "699:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 4377, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "703:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 4380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "699:17:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "677:39:19" + }, + { + "assignments": [ + 4383 + ], + "declarations": [ + { + "constant": false, + "id": 4383, + "mutability": "mutable", + "name": "index", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4423, + "src": "726:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4382, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "726:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4387, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4384, + "name": "digits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4361, + "src": "742:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 4385, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "751:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "742:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "726:26:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 4390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4388, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "762:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 4389, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4344, + "src": "769:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "762:12:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4391, + "nodeType": "ExpressionStatement", + "src": "762:12:19" + }, + { + "body": { + "id": 4416, + "nodeType": "Block", + "src": "802:96:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 4410, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4395, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "816:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 4398, + "indexExpression": { + "argumentTypes": null, + "id": 4397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "823:7:19", + "subExpression": { + "argumentTypes": null, + "id": 4396, + "name": "index", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4383, + "src": "823:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "816:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "hexValue": "3438", + "id": 4403, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "847:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_48_by_1", + "typeString": "int_const 48" + }, + "value": "48" + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4404, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "852:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3130", + "id": 4405, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "859:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "852:9:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "847:14:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4402, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "841:5:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 4401, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "841:5:19", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "841:21:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 4400, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "834:6:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": { + "id": 4399, + "name": "bytes1", + "nodeType": "ElementaryTypeName", + "src": "834:6:19", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "834:29:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "816:47:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 4411, + "nodeType": "ExpressionStatement", + "src": "816:47:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 4414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4412, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "877:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "/=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "3130", + "id": 4413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "885:2:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10_by_1", + "typeString": "int_const 10" + }, + "value": "10" + }, + "src": "877:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4415, + "nodeType": "ExpressionStatement", + "src": "877:10:19" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4392, + "name": "temp", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4357, + "src": "791:4:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "799:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "791:9:19", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4417, + "nodeType": "WhileStatement", + "src": "784:114:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4420, + "name": "buffer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4376, + "src": "921:6:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "914:6:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 4418, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "914:6:19", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4421, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "914:14:19", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 4348, + "id": 4422, + "nodeType": "Return", + "src": "907:21:19" + } + ] + }, + "documentation": { + "id": 4342, + "nodeType": "StructuredDocumentation", + "src": "123:82:19", + "text": " @dev Converts a `uint256` to its ASCII `string` representation." + }, + "id": 4424, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "toString", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4345, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4344, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4424, + "src": "228:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4343, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "228:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "227:15:19" + }, + "returnParameters": { + "id": 4348, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4347, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4424, + "src": "266:13:19", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4346, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "266:6:19", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "265:15:19" + }, + "scope": 4425, + "src": "210:725:19", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 4426, + "src": "101:836:19" + } + ], + "src": "33:905:19" + }, + "id": 19 + }, + "contracts/Bank1155.sol": { + "ast": { + "absolutePath": "contracts/Bank1155.sol", + "exportedSymbols": { + "Bank1155": [ + 5085 + ] + }, + "id": 5086, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 4427, + "literals": [ + "solidity", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "32:23:20" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "file": "@openzeppelin/contracts/token/ERC1155/IERC1155.sol", + "id": 4428, + "nodeType": "ImportDirective", + "scope": 5086, + "sourceUnit": 1698, + "src": "57:60:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "id": 4429, + "nodeType": "ImportDirective", + "scope": 5086, + "sourceUnit": 1576, + "src": "118:67:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 4430, + "name": "ERC1155Receiver", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1575, + "src": "209:15:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155Receiver_$1575", + "typeString": "contract ERC1155Receiver" + } + }, + "id": 4431, + "nodeType": "InheritanceSpecifier", + "src": "209:15:20" + } + ], + "contractDependencies": [ + 166, + 178, + 1575, + 1753 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5085, + "linearizedBaseContracts": [ + 5085, + 1575, + 1753, + 166, + 178 + ], + "name": "Bank1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "3644e515", + "id": 4433, + "mutability": "mutable", + "name": "DOMAIN_SEPARATOR", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5085, + "src": "232:31:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4432, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "232:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6b0509b1", + "id": 4435, + "mutability": "mutable", + "name": "CLAIM_TYPEHASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5085, + "src": "269:29:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "269:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c2d7ccdb", + "id": 4437, + "mutability": "mutable", + "name": "PASSWORD_TYPEHASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5085, + "src": "304:32:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4436, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "304:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9e317f12", + "id": 4441, + "mutability": "mutable", + "name": "nonces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5085, + "src": "342:38:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 4440, + "keyType": { + "id": 4438, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "350:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "342:24:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 4439, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "361:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "4aa57216", + "id": 4449, + "mutability": "mutable", + "name": "tokenUserBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5085, + "src": "386:85:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + }, + "typeName": { + "id": 4448, + "keyType": { + "id": 4442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "394:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "386:61:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + }, + "valueType": { + "id": 4447, + "keyType": { + "id": 4443, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "413:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "405:41:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + }, + "valueType": { + "id": 4446, + "keyType": { + "id": 4444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "429:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "421:24:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 4445, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "440:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 4459, + "name": "Deposit", + "nodeType": "EventDefinition", + "parameters": { + "id": 4458, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4451, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4459, + "src": "493:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4450, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "493:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4453, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4459, + "src": "516:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4452, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "516:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4455, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4459, + "src": "533:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4454, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "533:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4457, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4459, + "src": "553:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4456, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "553:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "492:72:20" + }, + "src": "478:87:20" + }, + { + "anonymous": false, + "documentation": null, + "id": 4469, + "name": "Withdraw", + "nodeType": "EventDefinition", + "parameters": { + "id": 4468, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4461, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4469, + "src": "586:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4460, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "586:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4463, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4469, + "src": "609:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4462, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "609:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4465, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4469, + "src": "626:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4464, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4467, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4469, + "src": "646:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4466, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "646:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "585:72:20" + }, + "src": "570:88:20" + }, + { + "anonymous": false, + "documentation": null, + "id": 4479, + "name": "Claim", + "nodeType": "EventDefinition", + "parameters": { + "id": 4478, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4471, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4479, + "src": "676:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4470, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "676:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4473, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4479, + "src": "699:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4472, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "699:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4475, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4479, + "src": "716:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4474, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "716:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4477, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4479, + "src": "738:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "675:74:20" + }, + "src": "663:87:20" + }, + { + "anonymous": false, + "documentation": null, + "id": 4489, + "name": "Password", + "nodeType": "EventDefinition", + "parameters": { + "id": 4488, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4481, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4489, + "src": "771:21:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4480, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4483, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4489, + "src": "794:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4482, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "794:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4485, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4489, + "src": "811:20:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4484, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "811:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4487, + "indexed": false, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4489, + "src": "833:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4486, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "833:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:74:20" + }, + "src": "755:90:20" + }, + { + "body": { + "id": 4536, + "nodeType": "Block", + "src": "873:686:20", + "statements": [ + { + "assignments": [ + 4493 + ], + "declarations": [ + { + "constant": false, + "id": 4493, + "mutability": "mutable", + "name": "chainId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4536, + "src": "883:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4492, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "883:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4494, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "883:12:20" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "914:44:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "928:20:20", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "939:7:20" + }, + "nodeType": "YulFunctionCall", + "src": "939:9:20" + }, + "variableNames": [ + { + "name": "chainId", + "nodeType": "YulIdentifier", + "src": "928:7:20" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 4493, + "isOffset": false, + "isSlot": false, + "src": "928:7:20", + "valueSize": 1 + } + ], + "id": 4495, + "nodeType": "InlineAssembly", + "src": "905:53:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4522, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4496, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4433, + "src": "967:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 4501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1047:84:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 4500, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1037:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1037:95:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "42616e6b31313535", + "id": 4506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1166:10:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47255516b75e0b6b5913e302fe3b8ffecc7740facbb54a27d4a0a2dce11d4d4c", + "typeString": "literal_string \"Bank1155\"" + }, + "value": "Bank1155" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_47255516b75e0b6b5913e302fe3b8ffecc7740facbb54a27d4a0a2dce11d4d4c", + "typeString": "literal_string \"Bank1155\"" + } + ], + "id": 4505, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1160:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 4504, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1160:5:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4507, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1160:17:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4503, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1150:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4508, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1150:28:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 4512, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1212:3:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 4511, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1206:5:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 4510, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1206:5:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4513, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1206:10:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4509, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1196:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1196:21:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4515, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4493, + "src": "1235:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4518, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1268:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 4517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1260:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4516, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1260:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1260:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 4498, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1009:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1009:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:278:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4497, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "986:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "986:311:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "967:330:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4523, + "nodeType": "ExpressionStatement", + "src": "967:330:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4524, + "name": "CLAIM_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4435, + "src": "1308:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "436c61696d286164647265737320746f6b656e2c75696e743235362069642c61646472657373206f776e65722c61646472657373207370656e6465722c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 4526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1335:94:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_242444289e23ce6db820d71eb5a872b74ab417877a6bc4b88ff9c0c982f42aa8", + "typeString": "literal_string \"Claim(address token,uint256 id,address owner,address spender,uint256 nonce,uint256 deadline)\"" + }, + "value": "Claim(address token,uint256 id,address owner,address spender,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_242444289e23ce6db820d71eb5a872b74ab417877a6bc4b88ff9c0c982f42aa8", + "typeString": "literal_string \"Claim(address token,uint256 id,address owner,address spender,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 4525, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1325:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4527, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1325:105:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1308:122:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4529, + "nodeType": "ExpressionStatement", + "src": "1308:122:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 4530, + "name": "PASSWORD_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4437, + "src": "1440:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50617373776f7264286164647265737320746f6b656e2c61646472657373206f776e65722c737472696e67207073772c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 4532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1470:81:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e1a52c71772aeec2cad9cac0dbd56513ea655223347c5201ca618b6d314300ec", + "typeString": "literal_string \"Password(address token,address owner,string psw,uint256 nonce,uint256 deadline)\"" + }, + "value": "Password(address token,address owner,string psw,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_e1a52c71772aeec2cad9cac0dbd56513ea655223347c5201ca618b6d314300ec", + "typeString": "literal_string \"Password(address token,address owner,string psw,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 4531, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1460:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1460:92:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1440:112:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 4535, + "nodeType": "ExpressionStatement", + "src": "1440:112:20" + } + ] + }, + "documentation": null, + "id": 4537, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4490, + "nodeType": "ParameterList", + "parameters": [], + "src": "863:2:20" + }, + "returnParameters": { + "id": 4491, + "nodeType": "ParameterList", + "parameters": [], + "src": "873:0:20" + }, + "scope": 5085, + "src": "852:707:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4588, + "nodeType": "Block", + "src": "1641:228:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4552, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1684:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1684:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4556, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1704:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 4555, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1696:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4554, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1696:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4557, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1696:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4558, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4541, + "src": "1711:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4559, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4545, + "src": "1715:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1722:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4549, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "1660:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4548, + "name": "IERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1697, + "src": "1651:8:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155_$1697_$", + "typeString": "type(contract IERC1155)" + } + }, + "id": 4550, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1651:15:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 4551, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1680, + "src": "1651:32:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external" + } + }, + "id": 4561, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1651:74:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4562, + "nodeType": "ExpressionStatement", + "src": "1651:74:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4579, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4563, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "1735:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4567, + "indexExpression": { + "argumentTypes": null, + "id": 4564, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "1752:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1735:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4568, + "indexExpression": { + "argumentTypes": null, + "id": 4565, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4541, + "src": "1759:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1735:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4569, + "indexExpression": { + "argumentTypes": null, + "id": 4566, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4543, + "src": "1763:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1735:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4578, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4570, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "1772:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4572, + "indexExpression": { + "argumentTypes": null, + "id": 4571, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "1789:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1772:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4574, + "indexExpression": { + "argumentTypes": null, + "id": 4573, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4541, + "src": "1796:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1772:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4576, + "indexExpression": { + "argumentTypes": null, + "id": 4575, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4543, + "src": "1800:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1772:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 4577, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4545, + "src": "1809:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1772:42:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1735:79:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4580, + "nodeType": "ExpressionStatement", + "src": "1735:79:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4582, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4539, + "src": "1838:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4583, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4541, + "src": "1845:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4584, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4543, + "src": "1849:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4585, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4545, + "src": "1856:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4581, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4459, + "src": "1830:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,address,uint256)" + } + }, + "id": 4586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1830:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4587, + "nodeType": "EmitStatement", + "src": "1825:37:20" + } + ] + }, + "documentation": null, + "functionSelector": "90d25074", + "id": 4589, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4546, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4539, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4589, + "src": "1583:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4538, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1583:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4541, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4589, + "src": "1598:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4540, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1598:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4543, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4589, + "src": "1607:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4542, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1607:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4545, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4589, + "src": "1622:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4544, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1622:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1582:51:20" + }, + "returnParameters": { + "id": 4547, + "nodeType": "ParameterList", + "parameters": [], + "src": "1641:0:20" + }, + "scope": 5085, + "src": "1566:303:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 4655, + "nodeType": "Block", + "src": "1954:334:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4610, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4601, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "1972:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4603, + "indexExpression": { + "argumentTypes": null, + "id": 4602, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "1989:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1972:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4605, + "indexExpression": { + "argumentTypes": null, + "id": 4604, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "1996:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1972:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4608, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4606, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2000:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2000:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1972:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 4609, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4597, + "src": "2015:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1972:48:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a77697468647261773a206f68206e6f", + "id": 4611, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2022:27:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2bbb0881b457852f9be96a6350f783820e4f5e232dce186b99f1f61b0857ff4b", + "typeString": "literal_string \"Bank1155::withdraw: oh no\"" + }, + "value": "Bank1155::withdraw: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2bbb0881b457852f9be96a6350f783820e4f5e232dce186b99f1f61b0857ff4b", + "typeString": "literal_string \"Bank1155::withdraw: oh no\"" + } + ], + "id": 4600, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1964:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4612, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1964:86:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4613, + "nodeType": "ExpressionStatement", + "src": "1964:86:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4614, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "2060:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4619, + "indexExpression": { + "argumentTypes": null, + "id": 4615, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "2077:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2060:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4620, + "indexExpression": { + "argumentTypes": null, + "id": 4616, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "2084:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2060:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4621, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4617, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2088:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2088:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2060:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4622, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "2102:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4624, + "indexExpression": { + "argumentTypes": null, + "id": 4623, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "2119:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2102:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4626, + "indexExpression": { + "argumentTypes": null, + "id": 4625, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "2126:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2102:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4629, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4627, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2130:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2130:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2102:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 4630, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4597, + "src": "2144:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2102:47:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2060:89:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4633, + "nodeType": "ExpressionStatement", + "src": "2060:89:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4640, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "2200:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 4639, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2192:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4638, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2192:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2192:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4642, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4595, + "src": "2207:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4643, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "2216:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4644, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4597, + "src": "2220:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4645, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2227:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4635, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "2168:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4634, + "name": "IERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1697, + "src": "2159:8:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155_$1697_$", + "typeString": "type(contract IERC1155)" + } + }, + "id": 4636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2159:15:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 4637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1680, + "src": "2159:32:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external" + } + }, + "id": 4646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2159:71:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4647, + "nodeType": "ExpressionStatement", + "src": "2159:71:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4649, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4591, + "src": "2255:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4650, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4593, + "src": "2262:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4651, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4595, + "src": "2266:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4652, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4597, + "src": "2275:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4648, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4469, + "src": "2246:8:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,address,uint256)" + } + }, + "id": 4653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2246:35:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4654, + "nodeType": "EmitStatement", + "src": "2241:40:20" + } + ] + }, + "documentation": null, + "functionSelector": "4b2084e3", + "id": 4656, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4591, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4656, + "src": "1894:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1894:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4593, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4656, + "src": "1909:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4592, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1909:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4595, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4656, + "src": "1918:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4594, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1918:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4597, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4656, + "src": "1935:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4596, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1935:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1893:53:20" + }, + "returnParameters": { + "id": 4599, + "nodeType": "ParameterList", + "parameters": [], + "src": "1954:0:20" + }, + "scope": 5085, + "src": "1876:412:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "baseFunctions": [ + 1734 + ], + "body": { + "id": 4718, + "nodeType": "Block", + "src": "3257:289:20", + "statements": [ + { + "assignments": [ + 4674 + ], + "declarations": [ + { + "constant": false, + "id": 4674, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4718, + "src": "3267:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4673, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3267:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4685, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4678, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4675, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4667, + "src": "3284:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 4676, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3284:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4677, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3299:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3284:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 4679, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "3283:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4682, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4667, + "src": "3326:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 4681, + "name": "bytesToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5084, + "src": "3311:14:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) pure returns (address)" + } + }, + "id": 4683, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3311:20:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4684, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "3283:48:20", + "trueExpression": { + "argumentTypes": null, + "id": 4680, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4661, + "src": "3304:4:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3267:64:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4704, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4686, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "3341:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4691, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4687, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3358:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3358:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3341:28:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4692, + "indexExpression": { + "argumentTypes": null, + "id": 4689, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4663, + "src": "3370:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3341:32:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4693, + "indexExpression": { + "argumentTypes": null, + "id": 4690, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4674, + "src": "3374:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3341:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4694, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "3383:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4697, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4695, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3400:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4696, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3400:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3383:28:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4699, + "indexExpression": { + "argumentTypes": null, + "id": 4698, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4663, + "src": "3412:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3383:32:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4701, + "indexExpression": { + "argumentTypes": null, + "id": 4700, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4674, + "src": "3416:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3383:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 4702, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4665, + "src": "3425:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3383:47:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3341:89:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4705, + "nodeType": "ExpressionStatement", + "src": "3341:89:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4707, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3453:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3453:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4709, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4663, + "src": "3465:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4710, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4674, + "src": "3469:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4711, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4665, + "src": "3476:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4706, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4459, + "src": "3445:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,address,uint256)" + } + }, + "id": 4712, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3445:37:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4713, + "nodeType": "EmitStatement", + "src": "3440:42:20" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4714, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "3508:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "id": 4715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155Received", + "nodeType": "MemberAccess", + "referencedDeclaration": 4719, + "src": "3508:22:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external returns (bytes4)" + } + }, + "id": 4716, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3508:31:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 4672, + "id": 4717, + "nodeType": "Return", + "src": "3501:38:20" + } + ] + }, + "documentation": { + "id": 4657, + "nodeType": "StructuredDocumentation", + "src": "2295:816:20", + "text": "@dev Handles the receipt of a single ERC1155 token type. This function is\ncalled at the end of a `safeTransferFrom` after the balance has been updated.\nTo accept the transfer, this must return\n`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`\n(i.e. 0xf23a6e61, or its own function selector).\n@param operator The address which initiated the transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param id The ID of the token being transferred\n@param value The amount of tokens being transferred\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))` if transfer is allowed" + }, + "functionSelector": "f23a6e61", + "id": 4719, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC1155Received", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4669, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "3232:8:20" + }, + "parameters": { + "id": 4668, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4659, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3143:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4658, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3143:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4661, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3161:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3161:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4663, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3175:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4662, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3175:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4665, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3187:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4664, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3187:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4667, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3202:19:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4666, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3202:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3142:80:20" + }, + "returnParameters": { + "id": 4672, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4671, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4719, + "src": "3249:6:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4670, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3249:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3248:8:20" + }, + "scope": 5085, + "src": "3116:430:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "baseFunctions": [ + 1752 + ], + "body": { + "id": 4808, + "nodeType": "Block", + "src": "4705:417:20", + "statements": [ + { + "assignments": [ + 4739 + ], + "declarations": [ + { + "constant": false, + "id": 4739, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4808, + "src": "4715:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4715:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4750, + "initialValue": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4743, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4740, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4732, + "src": "4732:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + }, + "id": 4741, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4732:11:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 4742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4747:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4732:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 4744, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4731:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4747, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4732, + "src": "4774:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes calldata" + } + ], + "id": 4746, + "name": "bytesToAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5084, + "src": "4759:14:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) pure returns (address)" + } + }, + "id": 4748, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4759:20:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 4749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "4731:48:20", + "trueExpression": { + "argumentTypes": null, + "id": 4745, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4724, + "src": "4752:4:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4715:64:20" + }, + { + "body": { + "id": 4802, + "nodeType": "Block", + "src": "4827:236:20", + "statements": [ + { + "assignments": [ + 4763 + ], + "declarations": [ + { + "constant": false, + "id": 4763, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4802, + "src": "4841:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4762, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4841:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4767, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4764, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4727, + "src": "4851:3:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 4766, + "indexExpression": { + "argumentTypes": null, + "id": 4765, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "4855:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4851:6:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4841:16:20" + }, + { + "assignments": [ + 4769 + ], + "declarations": [ + { + "constant": false, + "id": 4769, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4802, + "src": "4871:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4768, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4871:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4773, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4770, + "name": "values", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4730, + "src": "4884:6:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 4772, + "indexExpression": { + "argumentTypes": null, + "id": 4771, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "4891:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4884:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4871:22:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4774, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "4907:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4779, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4775, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4924:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4776, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4924:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4907:28:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4780, + "indexExpression": { + "argumentTypes": null, + "id": 4777, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4763, + "src": "4936:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4907:32:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4781, + "indexExpression": { + "argumentTypes": null, + "id": 4778, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4739, + "src": "4940:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4907:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4782, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "4949:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4785, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4783, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4966:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4966:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4949:28:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4787, + "indexExpression": { + "argumentTypes": null, + "id": 4786, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4763, + "src": "4978:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4949:32:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4789, + "indexExpression": { + "argumentTypes": null, + "id": 4788, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4739, + "src": "4982:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4949:39:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 4790, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4769, + "src": "4991:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4949:47:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4907:89:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4793, + "nodeType": "ExpressionStatement", + "src": "4907:89:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4795, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "5023:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 4796, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5023:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 4797, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4763, + "src": "5035:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4798, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4739, + "src": "5039:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4799, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4769, + "src": "5046:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 4794, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4459, + "src": "5015:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256,address,uint256)" + } + }, + "id": 4800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5015:37:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4801, + "nodeType": "EmitStatement", + "src": "5010:42:20" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4755, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "4806:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4756, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4727, + "src": "4810:3:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[] calldata" + } + }, + "id": 4757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4810:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4806:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 4803, + "initializationExpression": { + "assignments": [ + 4752 + ], + "declarations": [ + { + "constant": false, + "id": 4752, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4803, + "src": "4794:6:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4751, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4794:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4754, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 4753, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4803:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4794:10:20" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 4760, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4822:3:20", + "subExpression": { + "argumentTypes": null, + "id": 4759, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4752, + "src": "4822:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4761, + "nodeType": "ExpressionStatement", + "src": "4822:3:20" + }, + "nodeType": "ForStatement", + "src": "4789:274:20" + }, + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4804, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "5079:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "id": 4805, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "onERC1155BatchReceived", + "nodeType": "MemberAccess", + "referencedDeclaration": 4809, + "src": "5079:27:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bytes4_$", + "typeString": "function (address,address,uint256[] memory,uint256[] memory,bytes memory) external returns (bytes4)" + } + }, + "id": 4806, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "selector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5079:36:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "functionReturnParameters": 4737, + "id": 4807, + "nodeType": "Return", + "src": "5072:43:20" + } + ] + }, + "documentation": { + "id": 4720, + "nodeType": "StructuredDocumentation", + "src": "3553:977:20", + "text": "@dev Handles the receipt of a multiple ERC1155 token types. This function\nis called at the end of a `safeBatchTransferFrom` after the balances have\nbeen updated. To accept the transfer(s), this must return\n`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`\n(i.e. 0xbc197c81, or its own function selector).\n@param operator The address which initiated the batch transfer (i.e. msg.sender)\n@param from The address which previously owned the token\n@param ids An array containing ids of each token being transferred (order and length must match values array)\n@param values An array containing amounts of each token being transferred (order and length must match ids array)\n@param data Additional data with no specified format\n@return `bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))` if transfer is allowed" + }, + "functionSelector": "bc197c81", + "id": 4809, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "onERC1155BatchReceived", + "nodeType": "FunctionDefinition", + "overrides": { + "id": 4734, + "nodeType": "OverrideSpecifier", + "overrides": [], + "src": "4680:8:20" + }, + "parameters": { + "id": 4733, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4722, + "mutability": "mutable", + "name": "operator", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4567:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4721, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4567:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4724, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4585:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4723, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4585:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4727, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4599:22:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4725, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4599:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4726, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4599:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4730, + "mutability": "mutable", + "name": "values", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4623:25:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 4728, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4623:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4729, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4623:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4732, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4650:19:20", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_bytes_calldata_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 4731, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "4650:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4566:104:20" + }, + "returnParameters": { + "id": 4737, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4736, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4809, + "src": "4697:6:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 4735, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "4697:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4696:8:20" + }, + "scope": 5085, + "src": "4535:587:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 4940, + "nodeType": "Block", + "src": "5255:877:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4832, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4829, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4819, + "src": "5273:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4830, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "5285:5:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 4831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5285:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5273:27:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a636c61696d3a206578706972656420646561646c696e65", + "id": 4833, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5302:35:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_491d94209cf53c8376a999c308f212b481e5c9d30f7ac3c25b3ed2c8d35547cf", + "typeString": "literal_string \"Bank1155::claim: expired deadline\"" + }, + "value": "Bank1155::claim: expired deadline" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_491d94209cf53c8376a999c308f212b481e5c9d30f7ac3c25b3ed2c8d35547cf", + "typeString": "literal_string \"Bank1155::claim: expired deadline\"" + } + ], + "id": 4828, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5265:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5265:73:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4835, + "nodeType": "ExpressionStatement", + "src": "5265:73:20" + }, + { + "assignments": [ + 4837 + ], + "declarations": [ + { + "constant": false, + "id": 4837, + "mutability": "mutable", + "name": "digest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4940, + "src": "5348:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4836, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5348:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4856, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "1901", + "id": 4841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5422:10:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + "value": "\u0019\u0001" + }, + { + "argumentTypes": null, + "id": 4842, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4433, + "src": "5450:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4846, + "name": "CLAIM_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4435, + "src": "5505:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4847, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "5521:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4848, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "5528:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4849, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "5532:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4850, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4817, + "src": "5539:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4851, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4819, + "src": "5548:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4844, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5494:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5494:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5494:63:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4843, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5484:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5484:74:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4839, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "5388:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "5388:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5388:184:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4838, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "5365:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5365:217:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5348:234:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4861, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5600:15:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4858, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4441, + "src": "5601:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 4860, + "indexExpression": { + "argumentTypes": null, + "id": 4859, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4837, + "src": "5608:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5601:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a636c61696d3a206578706972656420646967657374", + "id": 4862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5617:33:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9e72fd8ed6f6660a884a248d4287677751c72e8324efae0d215b0fefce5a58bc", + "typeString": "literal_string \"Bank1155::claim: expired digest\"" + }, + "value": "Bank1155::claim: expired digest" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9e72fd8ed6f6660a884a248d4287677751c72e8324efae0d215b0fefce5a58bc", + "typeString": "literal_string \"Bank1155::claim: expired digest\"" + } + ], + "id": 4857, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5592:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5592:59:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4864, + "nodeType": "ExpressionStatement", + "src": "5592:59:20" + }, + { + "assignments": [ + 4866 + ], + "declarations": [ + { + "constant": false, + "id": 4866, + "mutability": "mutable", + "name": "recoveredAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4940, + "src": "5661:24:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4865, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5661:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4873, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4868, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4837, + "src": "5698:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4869, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4821, + "src": "5706:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 4870, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4823, + "src": "5709:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4871, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4825, + "src": "5712:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4867, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "5688:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 4872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5688:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "5661:53:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 4884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4880, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4875, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4866, + "src": "5732:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 4878, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5760:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 4877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5752:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4876, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5752:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5752:10:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "5732:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 4883, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4881, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4866, + "src": "5766:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 4882, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "5786:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5766:25:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "5732:59:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a636c61696d3a20696e76616c6964207369676e6174757265", + "id": 4885, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5793:36:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d3978657de48be1f586a0a8982bbb09985235848fb60b8a39ae6eef7eb170483", + "typeString": "literal_string \"Bank1155::claim: invalid signature\"" + }, + "value": "Bank1155::claim: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d3978657de48be1f586a0a8982bbb09985235848fb60b8a39ae6eef7eb170483", + "typeString": "literal_string \"Bank1155::claim: invalid signature\"" + } + ], + "id": 4874, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5724:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5724:106:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4887, + "nodeType": "ExpressionStatement", + "src": "5724:106:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4889, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "5849:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4891, + "indexExpression": { + "argumentTypes": null, + "id": 4890, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "5866:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5849:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4893, + "indexExpression": { + "argumentTypes": null, + "id": 4892, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "5873:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5849:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4895, + "indexExpression": { + "argumentTypes": null, + "id": 4894, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "5877:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5849:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 4896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5887:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5849:39:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a636c61696d3a206f68206e6f", + "id": 4898, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5890:24:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3103cf3f3228266148e19af653c4e6417f4d95ce81f6bdb8a50df920de11120a", + "typeString": "literal_string \"Bank1155::claim: oh no\"" + }, + "value": "Bank1155::claim: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3103cf3f3228266148e19af653c4e6417f4d95ce81f6bdb8a50df920de11120a", + "typeString": "literal_string \"Bank1155::claim: oh no\"" + } + ], + "id": 4888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "5841:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4899, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5841:74:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4900, + "nodeType": "ExpressionStatement", + "src": "5841:74:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 4917, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4901, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "5925:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4905, + "indexExpression": { + "argumentTypes": null, + "id": 4902, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "5942:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5925:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4906, + "indexExpression": { + "argumentTypes": null, + "id": 4903, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "5949:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5925:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4907, + "indexExpression": { + "argumentTypes": null, + "id": 4904, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "5953:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5925:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4916, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4908, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "5962:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 4910, + "indexExpression": { + "argumentTypes": null, + "id": 4909, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "5979:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5962:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 4912, + "indexExpression": { + "argumentTypes": null, + "id": 4911, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "5986:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5962:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 4914, + "indexExpression": { + "argumentTypes": null, + "id": 4913, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "5990:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5962:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 4915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5999:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "5962:38:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5925:75:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 4918, + "nodeType": "ExpressionStatement", + "src": "5925:75:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4925, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "6051:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 4924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6043:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 4923, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6043:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 4926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6043:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4927, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4817, + "src": "6058:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4928, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "6067:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 4929, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6071:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 4930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6074:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4920, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "6019:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4919, + "name": "IERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1697, + "src": "6010:8:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155_$1697_$", + "typeString": "type(contract IERC1155)" + } + }, + "id": 4921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6010:15:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 4922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1680, + "src": "6010:32:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external" + } + }, + "id": 4931, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6010:67:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4932, + "nodeType": "ExpressionStatement", + "src": "6010:67:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4934, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4811, + "src": "6099:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4935, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4813, + "src": "6106:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4936, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4815, + "src": "6110:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4937, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4817, + "src": "6117:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 4933, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4479, + "src": "6093:5:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address,address)" + } + }, + "id": 4938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6093:32:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4939, + "nodeType": "EmitStatement", + "src": "6088:37:20" + } + ] + }, + "documentation": null, + "functionSelector": "1d570d04", + "id": 4941, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claim", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4826, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4811, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5144:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4810, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5144:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4813, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5159:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4812, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5159:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4815, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5168:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4814, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5168:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4817, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5183:15:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4816, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5183:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4819, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5200:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4818, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5200:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4821, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5215:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4820, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "5215:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4823, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5224:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4822, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5224:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4825, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 4941, + "src": "5235:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4824, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5235:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5143:102:20" + }, + "returnParameters": { + "id": 4827, + "nodeType": "ParameterList", + "parameters": [], + "src": "5255:0:20" + }, + "scope": 5085, + "src": "5129:1003:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5074, + "nodeType": "Block", + "src": "6270:894:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 4964, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 4961, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4951, + "src": "6288:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 4962, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "6300:5:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 4963, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6300:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6288:27:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a70617373776f72643a206578706972656420646561646c696e65", + "id": 4965, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6317:38:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0a89b3068856176024e61de033bcec2110689a38aa7b3f2b4a6fc0698d1b34fa", + "typeString": "literal_string \"Bank1155::password: expired deadline\"" + }, + "value": "Bank1155::password: expired deadline" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0a89b3068856176024e61de033bcec2110689a38aa7b3f2b4a6fc0698d1b34fa", + "typeString": "literal_string \"Bank1155::password: expired deadline\"" + } + ], + "id": 4960, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6280:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4966, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6280:76:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4967, + "nodeType": "ExpressionStatement", + "src": "6280:76:20" + }, + { + "assignments": [ + 4969 + ], + "declarations": [ + { + "constant": false, + "id": 4969, + "mutability": "mutable", + "name": "digest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5074, + "src": "6366:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4968, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6366:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 4988, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "1901", + "id": 4973, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6440:10:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + "value": "\u0019\u0001" + }, + { + "argumentTypes": null, + "id": 4974, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4433, + "src": "6468:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4978, + "name": "PASSWORD_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4437, + "src": "6523:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 4979, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "6542:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4980, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "6549:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 4981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "6553:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 4982, + "name": "psw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4949, + "src": "6560:3:20", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 4983, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4951, + "src": "6565:8:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 4976, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6512:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4977, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6512:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6512:62:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4975, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6502:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6502:73:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 4971, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "6406:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 4972, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6406:16:20", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 4986, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6406:183:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 4970, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "6383:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 4987, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6383:216:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6366:233:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 4993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6617:15:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 4990, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4441, + "src": "6618:6:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 4992, + "indexExpression": { + "argumentTypes": null, + "id": 4991, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4969, + "src": "6625:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6618:14:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a70617373776f72643a206578706972656420646967657374", + "id": 4994, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6634:36:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_aac38272c35042cfd13518f7cfc15be562eb6db6723b286bdc9f5a462aa43d9e", + "typeString": "literal_string \"Bank1155::password: expired digest\"" + }, + "value": "Bank1155::password: expired digest" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_aac38272c35042cfd13518f7cfc15be562eb6db6723b286bdc9f5a462aa43d9e", + "typeString": "literal_string \"Bank1155::password: expired digest\"" + } + ], + "id": 4989, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6609:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 4995, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6609:62:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 4996, + "nodeType": "ExpressionStatement", + "src": "6609:62:20" + }, + { + "assignments": [ + 4998 + ], + "declarations": [ + { + "constant": false, + "id": 4998, + "mutability": "mutable", + "name": "recoveredAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5074, + "src": "6681:24:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4997, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6681:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5005, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5000, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4969, + "src": "6718:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5001, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4953, + "src": "6726:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 5002, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4955, + "src": "6729:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5003, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4957, + "src": "6732:1:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 4999, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "6708:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 5004, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6708:26:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "6681:53:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5012, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5007, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4998, + "src": "6752:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5010, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6780:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5009, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6772:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5008, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6772:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5011, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6772:10:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "6752:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5015, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5013, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4998, + "src": "6786:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5014, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "6806:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "6786:25:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "6752:59:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a70617373776f72643a20696e76616c6964207369676e6174757265", + "id": 5017, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6813:39:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d85c33ee669aadc89c7ace0e553bc944e0def29aa74b348e6d365f449badf3", + "typeString": "literal_string \"Bank1155::password: invalid signature\"" + }, + "value": "Bank1155::password: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5d85c33ee669aadc89c7ace0e553bc944e0def29aa74b348e6d365f449badf3", + "typeString": "literal_string \"Bank1155::password: invalid signature\"" + } + ], + "id": 5006, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6744:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5018, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6744:109:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5019, + "nodeType": "ExpressionStatement", + "src": "6744:109:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5021, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "6872:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 5023, + "indexExpression": { + "argumentTypes": null, + "id": 5022, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "6889:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6872:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 5025, + "indexExpression": { + "argumentTypes": null, + "id": 5024, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "6896:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6872:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5027, + "indexExpression": { + "argumentTypes": null, + "id": 5026, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "6900:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6872:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 5028, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6910:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6872:39:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b313135353a3a636c61696d3a206f68206e6f", + "id": 5030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6913:24:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3103cf3f3228266148e19af653c4e6417f4d95ce81f6bdb8a50df920de11120a", + "typeString": "literal_string \"Bank1155::claim: oh no\"" + }, + "value": "Bank1155::claim: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3103cf3f3228266148e19af653c4e6417f4d95ce81f6bdb8a50df920de11120a", + "typeString": "literal_string \"Bank1155::claim: oh no\"" + } + ], + "id": 5020, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "6864:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5031, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6864:74:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5032, + "nodeType": "ExpressionStatement", + "src": "6864:74:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 5049, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5033, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "6948:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 5037, + "indexExpression": { + "argumentTypes": null, + "id": 5034, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "6965:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6948:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 5038, + "indexExpression": { + "argumentTypes": null, + "id": 5035, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "6972:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6948:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5039, + "indexExpression": { + "argumentTypes": null, + "id": 5036, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "6976:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6948:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5048, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5040, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4449, + "src": "6985:16:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$_$", + "typeString": "mapping(address => mapping(uint256 => mapping(address => uint256)))" + } + }, + "id": 5042, + "indexExpression": { + "argumentTypes": null, + "id": 5041, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "7002:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6985:23:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(uint256 => mapping(address => uint256))" + } + }, + "id": 5044, + "indexExpression": { + "argumentTypes": null, + "id": 5043, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "7009:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6985:27:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5046, + "indexExpression": { + "argumentTypes": null, + "id": 5045, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "7013:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6985:34:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 5047, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7022:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6985:38:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6948:75:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5050, + "nodeType": "ExpressionStatement", + "src": "6948:75:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5057, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "7074:4:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 5056, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "7066:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5055, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7066:7:20", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7066:13:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5059, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7081:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7081:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5061, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "7093:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "31", + "id": 5062, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7097:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 5063, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7100:2:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5052, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "7042:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5051, + "name": "IERC1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1697, + "src": "7033:8:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC1155_$1697_$", + "typeString": "type(contract IERC1155)" + } + }, + "id": 5053, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7033:15:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC1155_$1697", + "typeString": "contract IERC1155" + } + }, + "id": 5054, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "safeTransferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1680, + "src": "7033:32:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory) external" + } + }, + "id": 5064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7033:70:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5065, + "nodeType": "ExpressionStatement", + "src": "7033:70:20" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5067, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4943, + "src": "7128:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5068, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4945, + "src": "7135:2:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5069, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4947, + "src": "7139:5:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5070, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "7146:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5071, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7146:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + ], + "id": 5066, + "name": "Password", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 4489, + "src": "7119:8:20", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_address_$returns$__$", + "typeString": "function (address,uint256,address,address)" + } + }, + "id": 5072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7119:38:20", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5073, + "nodeType": "EmitStatement", + "src": "7114:43:20" + } + ] + }, + "documentation": null, + "functionSelector": "3a84d051", + "id": 5075, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "password", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 4958, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4943, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6157:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4942, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6157:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4945, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6172:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4944, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6172:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4947, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6181:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 4946, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6181:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4949, + "mutability": "mutable", + "name": "psw", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6196:17:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 4948, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "6196:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4951, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6215:13:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4950, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "6215:4:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4953, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6230:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 4952, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6230:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4955, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6239:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4954, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6239:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 4957, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5075, + "src": "6250:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 4956, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "6250:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6156:104:20" + }, + "returnParameters": { + "id": 4959, + "nodeType": "ParameterList", + "parameters": [], + "src": "6270:0:20" + }, + "scope": 5085, + "src": "6139:1025:20", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5083, + "nodeType": "Block", + "src": "7254:75:20", + "statements": [ + { + "AST": { + "nodeType": "YulBlock", + "src": "7273:50:20", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "7287:26:20", + "value": { + "arguments": [ + { + "arguments": [ + { + "name": "bys", + "nodeType": "YulIdentifier", + "src": "7305:3:20" + }, + { + "kind": "number", + "nodeType": "YulLiteral", + "src": "7309:2:20", + "type": "", + "value": "20" + } + ], + "functionName": { + "name": "add", + "nodeType": "YulIdentifier", + "src": "7301:3:20" + }, + "nodeType": "YulFunctionCall", + "src": "7301:11:20" + } + ], + "functionName": { + "name": "mload", + "nodeType": "YulIdentifier", + "src": "7295:5:20" + }, + "nodeType": "YulFunctionCall", + "src": "7295:18:20" + }, + "variableNames": [ + { + "name": "addr", + "nodeType": "YulIdentifier", + "src": "7287:4:20" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 5080, + "isOffset": false, + "isSlot": false, + "src": "7287:4:20", + "valueSize": 1 + }, + { + "declaration": 5077, + "isOffset": false, + "isSlot": false, + "src": "7305:3:20", + "valueSize": 1 + } + ], + "id": 5082, + "nodeType": "InlineAssembly", + "src": "7264:59:20" + } + ] + }, + "documentation": null, + "id": 5084, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "bytesToAddress", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5078, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5077, + "mutability": "mutable", + "name": "bys", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5084, + "src": "7199:16:20", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5076, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "7199:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7198:18:20" + }, + "returnParameters": { + "id": 5081, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5080, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5084, + "src": "7240:12:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5079, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "7240:7:20", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7239:14:20" + }, + "scope": 5085, + "src": "7175:154:20", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5086, + "src": "188:7143:20" + } + ], + "src": "32:7299:20" + }, + "id": 20 + }, + "contracts/Bank20.sol": { + "ast": { + "absolutePath": "contracts/Bank20.sol", + "exportedSymbols": { + "Bank20": [ + 5538 + ] + }, + "id": 5539, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5087, + "literals": [ + "solidity", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "32:23:21" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5088, + "nodeType": "ImportDirective", + "scope": 5539, + "sourceUnit": 1832, + "src": "57:56:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5538, + "linearizedBaseContracts": [ + 5538 + ], + "name": "Bank20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "3644e515", + "id": 5090, + "mutability": "mutable", + "name": "DOMAIN_SEPARATOR", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5538, + "src": "139:31:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5089, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "139:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "6b0509b1", + "id": 5092, + "mutability": "mutable", + "name": "CLAIM_TYPEHASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5538, + "src": "176:29:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5091, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "176:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "c2d7ccdb", + "id": 5094, + "mutability": "mutable", + "name": "PASSWORD_TYPEHASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5538, + "src": "211:32:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5093, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "211:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "9e317f12", + "id": 5098, + "mutability": "mutable", + "name": "nonces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5538, + "src": "249:38:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 5097, + "keyType": { + "id": 5095, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "257:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "249:24:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 5096, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "268:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "d9c8a0d3", + "id": 5104, + "mutability": "mutable", + "name": "tokenUserBalance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5538, + "src": "293:68:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 5103, + "keyType": { + "id": 5099, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "301:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "293:44:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 5102, + "keyType": { + "id": 5100, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "320:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "312:24:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 5101, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "331:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5112, + "name": "Deposit", + "nodeType": "EventDefinition", + "parameters": { + "id": 5111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5106, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5112, + "src": "383:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5105, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "383:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5108, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5112, + "src": "406:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5107, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "406:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5110, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5112, + "src": "426:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5109, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "426:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "382:55:21" + }, + "src": "368:70:21" + }, + { + "anonymous": false, + "documentation": null, + "id": 5120, + "name": "Withdraw", + "nodeType": "EventDefinition", + "parameters": { + "id": 5119, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5114, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5120, + "src": "459:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5113, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "459:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5116, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5120, + "src": "482:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "482:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5118, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5120, + "src": "502:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5117, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "502:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "458:55:21" + }, + "src": "443:71:21" + }, + { + "anonymous": false, + "documentation": null, + "id": 5130, + "name": "Claim", + "nodeType": "EventDefinition", + "parameters": { + "id": 5129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5122, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5130, + "src": "532:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5121, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "532:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5124, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5130, + "src": "555:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5123, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "555:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5126, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5130, + "src": "577:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "577:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5128, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5130, + "src": "597:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5127, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "597:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "531:77:21" + }, + "src": "519:90:21" + }, + { + "anonymous": false, + "documentation": null, + "id": 5140, + "name": "Password", + "nodeType": "EventDefinition", + "parameters": { + "id": 5139, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5132, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5140, + "src": "630:21:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5131, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "630:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5134, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5140, + "src": "653:20:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5133, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "653:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5136, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5140, + "src": "675:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5135, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "675:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5138, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5140, + "src": "695:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5137, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "695:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "629:77:21" + }, + "src": "614:93:21" + }, + { + "body": { + "id": 5187, + "nodeType": "Block", + "src": "735:701:21", + "statements": [ + { + "assignments": [ + 5144 + ], + "declarations": [ + { + "constant": false, + "id": 5144, + "mutability": "mutable", + "name": "chainId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5187, + "src": "745:12:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5143, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "745:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5145, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "745:12:21" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "776:44:21", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "790:20:21", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "801:7:21" + }, + "nodeType": "YulFunctionCall", + "src": "801:9:21" + }, + "variableNames": [ + { + "name": "chainId", + "nodeType": "YulIdentifier", + "src": "790:7:21" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 5144, + "isOffset": false, + "isSlot": false, + "src": "790:7:21", + "valueSize": 1 + } + ], + "id": 5146, + "nodeType": "InlineAssembly", + "src": "767:53:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5147, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5090, + "src": "829:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 5152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "909:84:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 5151, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "899:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "899:95:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "42616e6b3230", + "id": 5157, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1028:8:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c33b8f30d6a402858e57eb4b188ffa157501657e98bce16bd78b9b0a91f4e32a", + "typeString": "literal_string \"Bank20\"" + }, + "value": "Bank20" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c33b8f30d6a402858e57eb4b188ffa157501657e98bce16bd78b9b0a91f4e32a", + "typeString": "literal_string \"Bank20\"" + } + ], + "id": 5156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1022:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5155, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1022:5:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1022:15:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5154, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1012:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5159, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1012:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 5163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1072:3:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 5162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1066:5:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 5161, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1066:5:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1066:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5160, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1056:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1056:21:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5166, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5144, + "src": "1095:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5169, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1128:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + ], + "id": 5168, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1120:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5167, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1120:7:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1120:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 5149, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "871:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5150, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "871:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:276:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5148, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "848:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "848:309:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "829:328:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5174, + "nodeType": "ExpressionStatement", + "src": "829:328:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5175, + "name": "CLAIM_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5092, + "src": "1168:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "436c61696d286164647265737320746f6b656e2c61646472657373206f776e65722c61646472657373207370656e6465722c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 5177, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1195:97:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec1994", + "typeString": "literal_string \"Claim(address token,address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + }, + "value": "Claim(address token,address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec1994", + "typeString": "literal_string \"Claim(address token,address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 5176, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1185:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1185:108:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1168:125:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5180, + "nodeType": "ExpressionStatement", + "src": "1168:125:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5185, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5181, + "name": "PASSWORD_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5094, + "src": "1303:17:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "50617373776f7264286164647265737320746f6b656e2c61646472657373206f776e65722c737472696e67207073772c75696e743235362076616c75652c75696e74323536206e6f6e63652c75696e7432353620646561646c696e6529", + "id": 5183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1333:95:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b", + "typeString": "literal_string \"Password(address token,address owner,string psw,uint256 value,uint256 nonce,uint256 deadline)\"" + }, + "value": "Password(address token,address owner,string psw,uint256 value,uint256 nonce,uint256 deadline)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b", + "typeString": "literal_string \"Password(address token,address owner,string psw,uint256 value,uint256 nonce,uint256 deadline)\"" + } + ], + "id": 5182, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1323:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1323:106:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1303:126:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 5186, + "nodeType": "ExpressionStatement", + "src": "1303:126:21" + } + ] + }, + "documentation": null, + "id": 5188, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5141, + "nodeType": "ParameterList", + "parameters": [], + "src": "725:2:21" + }, + "returnParameters": { + "id": 5142, + "nodeType": "ParameterList", + "parameters": [], + "src": "735:0:21" + }, + "scope": 5538, + "src": "714:722:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5230, + "nodeType": "Block", + "src": "1508:202:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5201, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1545:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1545:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5205, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1565:4:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + ], + "id": 5204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1557:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5203, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1557:7:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1557:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5207, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "1572:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5198, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "1525:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5197, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "1518:6:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1518:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1812, + "src": "1518:26:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 5208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1518:60:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5209, + "nodeType": "ExpressionStatement", + "src": "1518:60:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5222, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5210, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1588:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5213, + "indexExpression": { + "argumentTypes": null, + "id": 5211, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "1605:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1588:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5214, + "indexExpression": { + "argumentTypes": null, + "id": 5212, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "1612:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1588:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5215, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1621:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5217, + "indexExpression": { + "argumentTypes": null, + "id": 5216, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "1638:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1621:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5219, + "indexExpression": { + "argumentTypes": null, + "id": 5218, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "1645:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1621:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 5220, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "1654:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1621:38:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1588:71:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5223, + "nodeType": "ExpressionStatement", + "src": "1588:71:21" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5225, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5190, + "src": "1683:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5226, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5192, + "src": "1690:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5227, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5194, + "src": "1697:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5224, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5112, + "src": "1675:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1675:28:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5229, + "nodeType": "EmitStatement", + "src": "1670:33:21" + } + ] + }, + "documentation": null, + "functionSelector": "8340f549", + "id": 5231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5195, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5190, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5231, + "src": "1459:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5189, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1459:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5192, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5231, + "src": "1474:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5191, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1474:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5194, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5231, + "src": "1489:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5193, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1489:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1458:42:21" + }, + "returnParameters": { + "id": 5196, + "nodeType": "ParameterList", + "parameters": [], + "src": "1508:0:21" + }, + "scope": 5538, + "src": "1442:268:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5282, + "nodeType": "Block", + "src": "1785:283:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5241, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1803:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5243, + "indexExpression": { + "argumentTypes": null, + "id": 5242, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5233, + "src": "1820:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1803:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5246, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5244, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1827:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1827:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1803:35:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 5247, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "1842:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1803:44:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a77697468647261773a206f68206e6f", + "id": 5249, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1849:25:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_55d88437d828158e37d23052b1e4b641a93e6c5055f3811aefe1165cd23465a6", + "typeString": "literal_string \"Bank20::withdraw: oh no\"" + }, + "value": "Bank20::withdraw: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_55d88437d828158e37d23052b1e4b641a93e6c5055f3811aefe1165cd23465a6", + "typeString": "literal_string \"Bank20::withdraw: oh no\"" + } + ], + "id": 5240, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1795:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1795:80:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5251, + "nodeType": "ExpressionStatement", + "src": "1795:80:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5252, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1885:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5256, + "indexExpression": { + "argumentTypes": null, + "id": 5253, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5233, + "src": "1902:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1885:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5257, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5254, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1909:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5255, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1909:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1885:35:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5258, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "1923:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5260, + "indexExpression": { + "argumentTypes": null, + "id": 5259, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5233, + "src": "1940:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1923:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5263, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5261, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1947:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1947:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1923:35:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 5264, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "1961:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1923:43:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1885:81:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5267, + "nodeType": "ExpressionStatement", + "src": "1885:81:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5272, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5235, + "src": "1999:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5273, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "2008:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5269, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5233, + "src": "1983:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5268, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "1976:6:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5270, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1976:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1780, + "src": "1976:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1976:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5275, + "nodeType": "ExpressionStatement", + "src": "1976:38:21" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5277, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5233, + "src": "2039:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5278, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5235, + "src": "2046:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5279, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5237, + "src": "2055:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5276, + "name": "Withdraw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5120, + "src": "2030:8:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 5280, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2030:31:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5281, + "nodeType": "EmitStatement", + "src": "2025:36:21" + } + ] + }, + "documentation": null, + "functionSelector": "d9caed12", + "id": 5283, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5233, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5283, + "src": "1734:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5232, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1734:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5235, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5283, + "src": "1749:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1749:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5237, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5283, + "src": "1766:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5236, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1766:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1733:44:21" + }, + "returnParameters": { + "id": 5239, + "nodeType": "ParameterList", + "parameters": [], + "src": "1785:0:21" + }, + "scope": 5538, + "src": "1716:352:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5408, + "nodeType": "Block", + "src": "2203:873:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5303, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5293, + "src": "2221:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5304, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "2233:5:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2233:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2221:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a636c61696d3a206578706972656420646561646c696e65", + "id": 5307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2250:33:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_291e26ec2dcf1b121a3edb4fb12f1d9158fe7f6872bea1a14d1eb8ce230e33e0", + "typeString": "literal_string \"Bank20::claim: expired deadline\"" + }, + "value": "Bank20::claim: expired deadline" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_291e26ec2dcf1b121a3edb4fb12f1d9158fe7f6872bea1a14d1eb8ce230e33e0", + "typeString": "literal_string \"Bank20::claim: expired deadline\"" + } + ], + "id": 5302, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2213:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2213:71:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5309, + "nodeType": "ExpressionStatement", + "src": "2213:71:21" + }, + { + "assignments": [ + 5311 + ], + "declarations": [ + { + "constant": false, + "id": 5311, + "mutability": "mutable", + "name": "digest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "2294:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5310, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2294:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5330, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "1901", + "id": 5315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2368:10:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + "value": "\u0019\u0001" + }, + { + "argumentTypes": null, + "id": 5316, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5090, + "src": "2396:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5320, + "name": "CLAIM_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5092, + "src": "2451:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5321, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "2467:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5322, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "2474:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5323, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "2481:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5324, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2490:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5325, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5293, + "src": "2497:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5318, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2440:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5319, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2440:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5326, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2440:66:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5317, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2430:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2430:77:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 5313, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "2334:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2334:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2334:187:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5312, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "2311:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2311:220:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2294:237:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5335, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2549:15:21", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5332, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "2550:6:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 5334, + "indexExpression": { + "argumentTypes": null, + "id": 5333, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5311, + "src": "2557:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2550:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a636c61696d3a206578706972656420646967657374", + "id": 5336, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2566:31:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_de991c91d888c0bce18ab20da5d55130ab2e95d560764c62fe1058104f25f43f", + "typeString": "literal_string \"Bank20::claim: expired digest\"" + }, + "value": "Bank20::claim: expired digest" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_de991c91d888c0bce18ab20da5d55130ab2e95d560764c62fe1058104f25f43f", + "typeString": "literal_string \"Bank20::claim: expired digest\"" + } + ], + "id": 5331, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2541:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2541:57:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5338, + "nodeType": "ExpressionStatement", + "src": "2541:57:21" + }, + { + "assignments": [ + 5340 + ], + "declarations": [ + { + "constant": false, + "id": 5340, + "mutability": "mutable", + "name": "recoveredAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5408, + "src": "2608:24:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5339, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2608:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5347, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5342, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5311, + "src": "2645:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5343, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5295, + "src": "2653:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 5344, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5297, + "src": "2656:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5345, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5299, + "src": "2659:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5341, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "2635:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 5346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2635:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2608:53:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5349, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5340, + "src": "2679:16:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5352, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2707:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5351, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2699:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5350, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2699:7:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5353, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2699:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2679:30:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5355, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5340, + "src": "2713:16:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5356, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "2733:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2713:25:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2679:59:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a636c61696d3a20696e76616c6964207369676e6174757265", + "id": 5359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2740:34:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_47753752aa7852588b46b22d302c57d19636095dc228ecaf52f5d702204525ef", + "typeString": "literal_string \"Bank20::claim: invalid signature\"" + }, + "value": "Bank20::claim: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_47753752aa7852588b46b22d302c57d19636095dc228ecaf52f5d702204525ef", + "typeString": "literal_string \"Bank20::claim: invalid signature\"" + } + ], + "id": 5348, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2671:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2671:104:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5361, + "nodeType": "ExpressionStatement", + "src": "2671:104:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5369, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5363, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "2794:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5365, + "indexExpression": { + "argumentTypes": null, + "id": 5364, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "2811:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2794:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5367, + "indexExpression": { + "argumentTypes": null, + "id": 5366, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "2818:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2794:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 5368, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2828:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2794:39:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a636c61696d3a206f68206e6f", + "id": 5370, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:22:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a67ab601255d78c9f944b4d6b4ffced440fbd86b61cd1561e9db2fe34958a3a5", + "typeString": "literal_string \"Bank20::claim: oh no\"" + }, + "value": "Bank20::claim: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a67ab601255d78c9f944b4d6b4ffced440fbd86b61cd1561e9db2fe34958a3a5", + "typeString": "literal_string \"Bank20::claim: oh no\"" + } + ], + "id": 5362, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2786:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2786:72:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5372, + "nodeType": "ExpressionStatement", + "src": "2786:72:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5385, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5373, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "2868:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5376, + "indexExpression": { + "argumentTypes": null, + "id": 5374, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "2885:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2868:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5377, + "indexExpression": { + "argumentTypes": null, + "id": 5375, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "2892:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2868:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5384, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5378, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "2901:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5380, + "indexExpression": { + "argumentTypes": null, + "id": 5379, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "2918:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2901:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5382, + "indexExpression": { + "argumentTypes": null, + "id": 5381, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "2925:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2901:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 5383, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2934:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2901:38:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2868:71:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5386, + "nodeType": "ExpressionStatement", + "src": "2868:71:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5391, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "2972:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5392, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "2981:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5388, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "2956:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5387, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "2949:6:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5390, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1780, + "src": "2949:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2949:38:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5394, + "nodeType": "ExpressionStatement", + "src": "2949:38:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5399, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5395, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "2997:6:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 5397, + "indexExpression": { + "argumentTypes": null, + "id": 5396, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5311, + "src": "3004:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2997:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3014:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2997:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5400, + "nodeType": "ExpressionStatement", + "src": "2997:21:21" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5402, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5285, + "src": "3040:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5403, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5287, + "src": "3047:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5404, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5289, + "src": "3054:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5405, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5291, + "src": "3063:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5401, + "name": "Claim", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5130, + "src": "3034:5:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 5406, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3034:35:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5407, + "nodeType": "EmitStatement", + "src": "3029:40:21" + } + ] + }, + "documentation": null, + "functionSelector": "fe12e167", + "id": 5409, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "claim", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5300, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5285, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2089:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5284, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2089:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5287, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2104:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5286, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2104:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5289, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2119:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5288, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2119:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5291, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2136:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5290, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2136:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5293, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2148:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5292, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2148:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5295, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2163:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5294, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2163:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5297, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2172:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5296, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2172:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5299, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5409, + "src": "2183:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5298, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2183:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2088:105:21" + }, + "returnParameters": { + "id": 5301, + "nodeType": "ParameterList", + "parameters": [], + "src": "2203:0:21" + }, + "scope": 5538, + "src": "2074:1002:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5536, + "nodeType": "Block", + "src": "3216:893:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5432, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5429, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5419, + "src": "3234:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5430, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3246:5:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 5431, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3246:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3234:27:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a70617373776f72643a206578706972656420646561646c696e65", + "id": 5433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3263:36:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9c7fd29c7be0cd969539c7c5abc1497ceb3b6a9e8296dc49f77781a616b370ff", + "typeString": "literal_string \"Bank20::password: expired deadline\"" + }, + "value": "Bank20::password: expired deadline" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9c7fd29c7be0cd969539c7c5abc1497ceb3b6a9e8296dc49f77781a616b370ff", + "typeString": "literal_string \"Bank20::password: expired deadline\"" + } + ], + "id": 5428, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3226:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3226:74:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5435, + "nodeType": "ExpressionStatement", + "src": "3226:74:21" + }, + { + "assignments": [ + 5437 + ], + "declarations": [ + { + "constant": false, + "id": 5437, + "mutability": "mutable", + "name": "digest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5536, + "src": "3310:14:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5436, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3310:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5456, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "1901", + "id": 5441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3384:10:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + "value": "\u0019\u0001" + }, + { + "argumentTypes": null, + "id": 5442, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5090, + "src": "3412:16:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5446, + "name": "PASSWORD_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5094, + "src": "3467:17:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5447, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "3486:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5448, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "3493:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5449, + "name": "psw", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5415, + "src": "3500:3:21", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + { + "argumentTypes": null, + "id": 5450, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5417, + "src": "3505:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5451, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5419, + "src": "3512:8:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5444, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3456:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3456:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3456:65:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5443, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3446:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5453, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3446:76:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 5439, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3350:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 5440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3350:16:21", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 5454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3350:186:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5438, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3327:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 5455, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3327:219:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3310:236:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5461, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3564:15:21", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5458, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "3565:6:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 5460, + "indexExpression": { + "argumentTypes": null, + "id": 5459, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5437, + "src": "3572:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3565:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a70617373776f72643a206578706972656420646967657374", + "id": 5462, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3581:34:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_29dc02eaa7ac60a9de449493e05a1af8caafa5a568e4aa711fbcea044f1f61fd", + "typeString": "literal_string \"Bank20::password: expired digest\"" + }, + "value": "Bank20::password: expired digest" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_29dc02eaa7ac60a9de449493e05a1af8caafa5a568e4aa711fbcea044f1f61fd", + "typeString": "literal_string \"Bank20::password: expired digest\"" + } + ], + "id": 5457, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3556:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3556:60:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5464, + "nodeType": "ExpressionStatement", + "src": "3556:60:21" + }, + { + "assignments": [ + 5466 + ], + "declarations": [ + { + "constant": false, + "id": 5466, + "mutability": "mutable", + "name": "recoveredAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5536, + "src": "3626:24:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5465, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3626:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5473, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5468, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5437, + "src": "3663:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5469, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5421, + "src": "3671:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 5470, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5423, + "src": "3674:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 5471, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5425, + "src": "3677:1:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 5467, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "3653:9:21", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 5472, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3653:26:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3626:53:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 5484, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5480, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5475, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5466, + "src": "3697:16:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 5478, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3725:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 5477, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3717:7:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5476, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3717:7:21", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5479, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3717:10:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3697:30:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 5483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5481, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5466, + "src": "3731:16:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 5482, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "3751:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3731:25:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3697:59:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a70617373776f72643a20696e76616c6964207369676e6174757265", + "id": 5485, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3758:37:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e57978e109ca7d332c1a6ee3881b593a839a7923f2347b342c34f1258ecb61bc", + "typeString": "literal_string \"Bank20::password: invalid signature\"" + }, + "value": "Bank20::password: invalid signature" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e57978e109ca7d332c1a6ee3881b593a839a7923f2347b342c34f1258ecb61bc", + "typeString": "literal_string \"Bank20::password: invalid signature\"" + } + ], + "id": 5474, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3689:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5486, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3689:107:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5487, + "nodeType": "ExpressionStatement", + "src": "3689:107:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5489, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3815:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5491, + "indexExpression": { + "argumentTypes": null, + "id": 5490, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "3832:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3815:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5493, + "indexExpression": { + "argumentTypes": null, + "id": 5492, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "3839:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3815:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 5494, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5417, + "src": "3849:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3815:39:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "42616e6b32303a3a70617373776f72643a206f68206e6f", + "id": 5496, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3856:25:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4e9fc727b16edbb9fa4e3ec9edfe377b0680294d841f0e3bc53426c3da97bef4", + "typeString": "literal_string \"Bank20::password: oh no\"" + }, + "value": "Bank20::password: oh no" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4e9fc727b16edbb9fa4e3ec9edfe377b0680294d841f0e3bc53426c3da97bef4", + "typeString": "literal_string \"Bank20::password: oh no\"" + } + ], + "id": 5488, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3807:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 5497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3807:75:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5498, + "nodeType": "ExpressionStatement", + "src": "3807:75:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5511, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5499, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3892:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5502, + "indexExpression": { + "argumentTypes": null, + "id": 5500, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "3909:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3892:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5503, + "indexExpression": { + "argumentTypes": null, + "id": 5501, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "3916:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3892:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 5510, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5504, + "name": "tokenUserBalance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5104, + "src": "3925:16:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 5506, + "indexExpression": { + "argumentTypes": null, + "id": 5505, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "3942:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3925:23:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 5508, + "indexExpression": { + "argumentTypes": null, + "id": 5507, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "3949:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3925:30:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 5509, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5417, + "src": "3958:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3925:38:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3892:71:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5512, + "nodeType": "ExpressionStatement", + "src": "3892:71:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5517, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "3996:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3996:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5519, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5417, + "src": "4008:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5514, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "3980:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5513, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "3973:6:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3973:13:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1780, + "src": "3973:22:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3973:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5521, + "nodeType": "ExpressionStatement", + "src": "3973:41:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 5526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5522, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5098, + "src": "4024:6:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 5524, + "indexExpression": { + "argumentTypes": null, + "id": 5523, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5437, + "src": "4031:6:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4024:14:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 5525, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4041:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4024:21:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5527, + "nodeType": "ExpressionStatement", + "src": "4024:21:21" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5529, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5411, + "src": "4070:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5530, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5413, + "src": "4077:5:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5531, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "4084:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5532, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4084:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5533, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5417, + "src": "4096:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 5528, + "name": "Password", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5140, + "src": "4061:8:21", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,address,uint256)" + } + }, + "id": 5534, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4061:41:21", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5535, + "nodeType": "EmitStatement", + "src": "4056:46:21" + } + ] + }, + "documentation": null, + "functionSelector": "8be27cb6", + "id": 5537, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "password", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5426, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5411, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3100:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5410, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3100:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5413, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3115:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5412, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3115:7:21", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5415, + "mutability": "mutable", + "name": "psw", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3130:17:21", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5414, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "3130:6:21", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5417, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3149:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5416, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3149:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5419, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3161:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5418, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "3161:4:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5421, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3176:7:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5420, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3176:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5423, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3185:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5422, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3185:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5425, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5537, + "src": "3196:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 5424, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3196:7:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3099:107:21" + }, + "returnParameters": { + "id": 5427, + "nodeType": "ParameterList", + "parameters": [], + "src": "3216:0:21" + }, + "scope": 5538, + "src": "3082:1027:21", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5539, + "src": "116:3995:21" + } + ], + "src": "32:4079:21" + }, + "id": 21 + }, + "contracts/DeDropsERC.sol": { + "ast": { + "absolutePath": "contracts/DeDropsERC.sol", + "exportedSymbols": { + "DeDropsERC": [ + 5660 + ] + }, + "id": 5661, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5540, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:31:22" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", + "id": 5541, + "nodeType": "ImportDirective", + "scope": 5661, + "sourceUnit": 1832, + "src": "65:56:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 5542, + "nodeType": "ImportDirective", + "scope": 5661, + "sourceUnit": 110, + "src": "122:52:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Bank20.sol", + "file": "./Bank20.sol", + "id": 5543, + "nodeType": "ImportDirective", + "scope": 5661, + "sourceUnit": 5539, + "src": "175:22:22", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5544, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 109, + "src": "256:7:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$109", + "typeString": "contract Ownable" + } + }, + "id": 5545, + "nodeType": "InheritanceSpecifier", + "src": "256:7:22" + } + ], + "contractDependencies": [ + 109, + 3286 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5660, + "linearizedBaseContracts": [ + 5660, + 109, + 3286 + ], + "name": "DeDropsERC", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "1f7b6d32", + "id": 5548, + "mutability": "mutable", + "name": "length", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5660, + "src": "271:25:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5546, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "271:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30", + "id": 5547, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "295:1:22", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "76cdb03b", + "id": 5550, + "mutability": "mutable", + "name": "bank", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5660, + "src": "302:18:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + }, + "typeName": { + "contractScope": null, + "id": 5549, + "name": "Bank20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5538, + "src": "302:6:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5562, + "name": "Drop", + "nodeType": "EventDefinition", + "parameters": { + "id": 5561, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5552, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5562, + "src": "338:18:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5551, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "338:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5554, + "indexed": true, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5562, + "src": "358:21:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5553, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "358:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5556, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5562, + "src": "381:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "381:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5558, + "indexed": false, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5562, + "src": "397:11:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5557, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "397:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5560, + "indexed": false, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5562, + "src": "410:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5559, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "410:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "337:86:22" + }, + "src": "327:97:22" + }, + { + "canonicalName": "DeDropsERC.Item", + "id": 5573, + "members": [ + { + "constant": false, + "id": 5564, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5573, + "src": "452:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "452:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5566, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5573, + "src": "472:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5565, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5568, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5573, + "src": "495:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5567, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "495:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5570, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5573, + "src": "519:11:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5569, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "519:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5572, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5573, + "src": "540:12:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5571, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "540:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Item", + "nodeType": "StructDefinition", + "scope": 5660, + "src": "430:129:22", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "a36701a9", + "id": 5577, + "mutability": "mutable", + "name": "idToItem", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5660, + "src": "565:41:22", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5573_storage_$", + "typeString": "mapping(uint256 => struct DeDropsERC.Item)" + }, + "typeName": { + "id": 5576, + "keyType": { + "id": 5574, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "574:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "565:25:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5573_storage_$", + "typeString": "mapping(uint256 => struct DeDropsERC.Item)" + }, + "valueType": { + "contractScope": null, + "id": 5575, + "name": "Item", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5573, + "src": "585:4:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5573_storage_ptr", + "typeString": "struct DeDropsERC.Item" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 5588, + "nodeType": "Block", + "src": "654:43:22", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5586, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5582, + "name": "bank", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5550, + "src": "664:4:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5584, + "name": "bankAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5579, + "src": "678:11:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5583, + "name": "Bank20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5538, + "src": "671:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bank20_$5538_$", + "typeString": "type(contract Bank20)" + } + }, + "id": 5585, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "671:19:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + }, + "src": "664:26:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + }, + "id": 5587, + "nodeType": "ExpressionStatement", + "src": "664:26:22" + } + ] + }, + "documentation": null, + "id": 5589, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5579, + "mutability": "mutable", + "name": "bankAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5589, + "src": "626:19:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5578, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "625:21:22" + }, + "returnParameters": { + "id": 5581, + "nodeType": "ParameterList", + "parameters": [], + "src": "654:0:22" + }, + "scope": 5660, + "src": "614:83:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5658, + "nodeType": "Block", + "src": "803:323:22", + "statements": [ + { + "assignments": [ + 5601 + ], + "declarations": [ + { + "constant": false, + "id": 5601, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5658, + "src": "813:10:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5600, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "813:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5604, + "initialValue": { + "argumentTypes": null, + "id": 5603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "826:8:22", + "subExpression": { + "argumentTypes": null, + "id": 5602, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5548, + "src": "828:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "813:21:22" + }, + { + "expression": { + "argumentTypes": null, + "id": 5615, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5605, + "name": "idToItem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5577, + "src": "844:8:22", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5573_storage_$", + "typeString": "mapping(uint256 => struct DeDropsERC.Item storage ref)" + } + }, + "id": 5607, + "indexExpression": { + "argumentTypes": null, + "id": 5606, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5601, + "src": "853:2:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "844:12:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5573_storage", + "typeString": "struct DeDropsERC.Item storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5609, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5601, + "src": "864:2:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5610, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5591, + "src": "868:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5611, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5593, + "src": "875:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5612, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "883:4:22", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5613, + "name": "info2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5597, + "src": "889:5:22", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5608, + "name": "Item", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5573, + "src": "859:4:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Item_$5573_storage_ptr_$", + "typeString": "type(struct DeDropsERC.Item storage pointer)" + } + }, + "id": 5614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "859:36:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5573_memory_ptr", + "typeString": "struct DeDropsERC.Item memory" + } + }, + "src": "844:51:22", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5573_storage", + "typeString": "struct DeDropsERC.Item storage ref" + } + }, + "id": 5616, + "nodeType": "ExpressionStatement", + "src": "844:51:22" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5621, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "933:3:22", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5622, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "933:10:22", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5625, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "953:4:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DeDropsERC_$5660", + "typeString": "contract DeDropsERC" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DeDropsERC_$5660", + "typeString": "contract DeDropsERC" + } + ], + "id": 5624, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "945:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5623, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "945:7:22", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "945:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5627, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5593, + "src": "960:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5618, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5591, + "src": "913:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5617, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "906:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5619, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "906:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5620, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transferFrom", + "nodeType": "MemberAccess", + "referencedDeclaration": 1812, + "src": "906:26:22", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) external returns (bool)" + } + }, + "id": 5628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "906:61:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5629, + "nodeType": "ExpressionStatement", + "src": "906:61:22" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5636, + "name": "bank", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5550, + "src": "1007:4:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + ], + "id": 5635, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "999:7:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5634, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "999:7:22", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5637, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "999:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5638, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5593, + "src": "1014:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5631, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5591, + "src": "984:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5630, + "name": "IERC20", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1831, + "src": "977:6:22", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_IERC20_$1831_$", + "typeString": "type(contract IERC20)" + } + }, + "id": 5632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "977:13:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$1831", + "typeString": "contract IERC20" + } + }, + "id": 5633, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "approve", + "nodeType": "MemberAccess", + "referencedDeclaration": 1800, + "src": "977:21:22", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 5639, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "977:44:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5640, + "nodeType": "ExpressionStatement", + "src": "977:44:22" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5644, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5591, + "src": "1044:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5645, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "1051:5:22", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1051:7:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5647, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5593, + "src": "1060:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 5641, + "name": "bank", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5550, + "src": "1031:4:22", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank20_$5538", + "typeString": "contract Bank20" + } + }, + "id": 5643, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "deposit", + "nodeType": "MemberAccess", + "referencedDeclaration": 5231, + "src": "1031:12:22", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256) external" + } + }, + "id": 5648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1031:36:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5649, + "nodeType": "ExpressionStatement", + "src": "1031:36:22" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5651, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5601, + "src": "1088:2:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5652, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5591, + "src": "1092:5:22", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5653, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5593, + "src": "1099:6:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5654, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5595, + "src": "1107:4:22", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5655, + "name": "info2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5597, + "src": "1113:5:22", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5650, + "name": "Drop", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5562, + "src": "1083:4:22", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_address_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,address,uint256,string memory,string memory)" + } + }, + "id": 5656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1083:36:22", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5657, + "nodeType": "EmitStatement", + "src": "1078:41:22" + } + ] + }, + "documentation": null, + "functionSelector": "da9dd9c8", + "id": 5659, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "drop", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5598, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5591, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5659, + "src": "718:13:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5590, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "718:7:22", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5593, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5659, + "src": "733:14:22", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5592, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "733:7:22", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5595, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5659, + "src": "749:20:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5594, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "749:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5597, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5659, + "src": "771:21:22", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5596, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "771:6:22", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "717:76:22" + }, + "returnParameters": { + "id": 5599, + "nodeType": "ParameterList", + "parameters": [], + "src": "803:0:22" + }, + "scope": 5660, + "src": "704:422:22", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5661, + "src": "233:895:22" + } + ], + "src": "32:1096:22" + }, + "id": 22 + }, + "contracts/DeDropsNFT.sol": { + "ast": { + "absolutePath": "contracts/DeDropsNFT.sol", + "exportedSymbols": { + "DeDropsNFT": [ + 5815 + ] + }, + "id": 5816, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5662, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "32:31:23" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "file": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "id": 5663, + "nodeType": "ImportDirective", + "scope": 5816, + "sourceUnit": 1542, + "src": "65:59:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/access/Ownable.sol", + "file": "@openzeppelin/contracts/access/Ownable.sol", + "id": 5664, + "nodeType": "ImportDirective", + "scope": 5816, + "sourceUnit": 110, + "src": "125:52:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "file": "@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol", + "id": 5665, + "nodeType": "ImportDirective", + "scope": 5816, + "sourceUnit": 1576, + "src": "178:67:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "contracts/Bank1155.sol", + "file": "./Bank1155.sol", + "id": 5666, + "nodeType": "ImportDirective", + "scope": 5816, + "sourceUnit": 5086, + "src": "246:24:23", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "646564726f70732e78797a", + "id": 5668, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "337:13:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ac4cf7270b980b3c3f528a5b352c91d5bebf45c7611ded1feeb1189f4e95d38a", + "typeString": "literal_string \"dedrops.xyz\"" + }, + "value": "dedrops.xyz" + } + ], + "baseName": { + "contractScope": null, + "id": 5667, + "name": "ERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1541, + "src": "329:7:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$1541", + "typeString": "contract ERC1155" + } + }, + "id": 5669, + "nodeType": "InheritanceSpecifier", + "src": "329:22:23" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 5670, + "name": "Ownable", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 109, + "src": "353:7:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Ownable_$109", + "typeString": "contract Ownable" + } + }, + "id": 5671, + "nodeType": "InheritanceSpecifier", + "src": "353:7:23" + } + ], + "contractDependencies": [ + 109, + 166, + 178, + 1541, + 1697, + 1712, + 3286 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5815, + "linearizedBaseContracts": [ + 5815, + 109, + 1541, + 1712, + 1697, + 166, + 178, + 3286 + ], + "name": "DeDropsNFT", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "1f7b6d32", + "id": 5674, + "mutability": "mutable", + "name": "length", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5815, + "src": "368:25:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5672, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "368:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "30", + "id": 5673, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "392:1:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "76cdb03b", + "id": 5676, + "mutability": "mutable", + "name": "bank", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5815, + "src": "399:20:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + }, + "typeName": { + "contractScope": null, + "id": 5675, + "name": "Bank1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5085, + "src": "399:8:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 5686, + "name": "Drop", + "nodeType": "EventDefinition", + "parameters": { + "id": 5685, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5678, + "indexed": true, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "437:18:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5677, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "437:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5680, + "indexed": false, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "457:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5679, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "457:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5682, + "indexed": false, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "473:11:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5681, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "473:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5684, + "indexed": false, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5686, + "src": "486:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5683, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "486:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "436:63:23" + }, + "src": "426:74:23" + }, + { + "canonicalName": "DeDropsNFT.Item", + "id": 5695, + "members": [ + { + "constant": false, + "id": 5688, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5695, + "src": "528:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5687, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "528:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5690, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5695, + "src": "548:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5689, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "548:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5692, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5695, + "src": "572:11:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5691, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "572:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5694, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5695, + "src": "593:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5693, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "593:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Item", + "nodeType": "StructDefinition", + "scope": 5815, + "src": "506:106:23", + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "a36701a9", + "id": 5699, + "mutability": "mutable", + "name": "idToItem", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5815, + "src": "618:41:23", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5695_storage_$", + "typeString": "mapping(uint256 => struct DeDropsNFT.Item)" + }, + "typeName": { + "id": 5698, + "keyType": { + "id": 5696, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "627:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Mapping", + "src": "618:25:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5695_storage_$", + "typeString": "mapping(uint256 => struct DeDropsNFT.Item)" + }, + "valueType": { + "contractScope": null, + "id": 5697, + "name": "Item", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 5695, + "src": "638:4:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5695_storage_ptr", + "typeString": "struct DeDropsNFT.Item" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 5710, + "nodeType": "Block", + "src": "707:45:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 5704, + "name": "bank", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "717:4:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5706, + "name": "bankAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5701, + "src": "733:11:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5705, + "name": "Bank1155", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5085, + "src": "724:8:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Bank1155_$5085_$", + "typeString": "type(contract Bank1155)" + } + }, + "id": 5707, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "724:21:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "src": "717:28:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + }, + "id": 5709, + "nodeType": "ExpressionStatement", + "src": "717:28:23" + } + ] + }, + "documentation": null, + "id": 5711, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5702, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5701, + "mutability": "mutable", + "name": "bankAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5711, + "src": "679:19:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5700, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "679:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "678:21:23" + }, + "returnParameters": { + "id": 5703, + "nodeType": "ParameterList", + "parameters": [], + "src": "707:0:23" + }, + "scope": 5815, + "src": "667:85:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5766, + "nodeType": "Block", + "src": "843:271:23", + "statements": [ + { + "assignments": [ + 5721 + ], + "declarations": [ + { + "constant": false, + "id": 5721, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5766, + "src": "853:10:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5720, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "853:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5724, + "initialValue": { + "argumentTypes": null, + "id": 5723, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": true, + "src": "866:8:23", + "subExpression": { + "argumentTypes": null, + "id": 5722, + "name": "length", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5674, + "src": "868:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "853:21:23" + }, + { + "expression": { + "argumentTypes": null, + "id": 5734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5725, + "name": "idToItem", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5699, + "src": "884:8:23", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Item_$5695_storage_$", + "typeString": "mapping(uint256 => struct DeDropsNFT.Item storage ref)" + } + }, + "id": 5727, + "indexExpression": { + "argumentTypes": null, + "id": 5726, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "893:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "884:12:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5695_storage", + "typeString": "struct DeDropsNFT.Item storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5729, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "904:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5730, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5713, + "src": "908:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5731, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "916:4:23", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5732, + "name": "info2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "922:5:23", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5728, + "name": "Item", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5695, + "src": "899:4:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_struct$_Item_$5695_storage_ptr_$", + "typeString": "type(struct DeDropsNFT.Item storage pointer)" + } + }, + "id": 5733, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "structConstructorCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "899:29:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5695_memory_ptr", + "typeString": "struct DeDropsNFT.Item memory" + } + }, + "src": "884:44:23", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Item_$5695_storage", + "typeString": "struct DeDropsNFT.Item storage ref" + } + }, + "id": 5735, + "nodeType": "ExpressionStatement", + "src": "884:44:23" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5737, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "945:3:23", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5738, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "945:10:23", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 5739, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "957:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5740, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5713, + "src": "961:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 5741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "969:2:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 5736, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1089, + "src": "939:5:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory)" + } + }, + "id": 5742, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "939:33:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5743, + "nodeType": "ExpressionStatement", + "src": "939:33:23" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 5745, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "999:3:23", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 5746, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "999:10:23", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5749, + "name": "bank", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5676, + "src": "1019:4:23", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Bank1155_$5085", + "typeString": "contract Bank1155" + } + ], + "id": 5748, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1011:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 5747, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1011:7:23", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5750, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1011:13:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5751, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "1026:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5752, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5713, + "src": "1030:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 5754, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 44, + "src": "1053:5:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$", + "typeString": "function () view returns (address)" + } + }, + "id": 5755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1053:7:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5753, + "name": "addressToBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5814, + "src": "1038:14:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_address_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (address) pure returns (bytes memory)" + } + }, + "id": 5756, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:23:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5744, + "name": "safeTransferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 858, + "src": "982:16:23", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,uint256,bytes memory)" + } + }, + "id": 5757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "982:80:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5758, + "nodeType": "ExpressionStatement", + "src": "982:80:23" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5760, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5721, + "src": "1083:2:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5761, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5713, + "src": "1087:6:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5762, + "name": "info", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5715, + "src": "1095:4:23", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + }, + { + "argumentTypes": null, + "id": 5763, + "name": "info2", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5717, + "src": "1101:5:23", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + }, + { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string calldata" + } + ], + "id": 5759, + "name": "Drop", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5686, + "src": "1078:4:23", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (uint256,uint256,string memory,string memory)" + } + }, + "id": 5764, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1078:29:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5765, + "nodeType": "EmitStatement", + "src": "1073:34:23" + } + ] + }, + "documentation": null, + "functionSelector": "2825df7b", + "id": 5767, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5718, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5713, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5767, + "src": "773:14:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5712, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "773:7:23", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5715, + "mutability": "mutable", + "name": "info", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5767, + "src": "789:20:23", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5714, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "789:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5717, + "mutability": "mutable", + "name": "info2", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5767, + "src": "811:21:23", + "stateVariable": false, + "storageLocation": "calldata", + "typeDescriptions": { + "typeIdentifier": "t_string_calldata_ptr", + "typeString": "string" + }, + "typeName": { + "id": 5716, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "811:6:23", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "772:61:23" + }, + "returnParameters": { + "id": 5719, + "nodeType": "ParameterList", + "parameters": [], + "src": "843:0:23" + }, + "scope": 5815, + "src": "759:355:23", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5813, + "nodeType": "Block", + "src": "1196:207:23", + "statements": [ + { + "assignments": [ + 5775 + ], + "declarations": [ + { + "constant": false, + "id": 5775, + "mutability": "mutable", + "name": "addrBytes", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5813, + "src": "1206:17:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + }, + "typeName": { + "id": 5774, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "1206:7:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5783, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5780, + "name": "addr", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5769, + "src": "1242:4:23", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 5779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1234:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint160_$", + "typeString": "type(uint160)" + }, + "typeName": { + "id": 5778, + "name": "uint160", + "nodeType": "ElementaryTypeName", + "src": "1234:7:23", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1234:13:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint160", + "typeString": "uint160" + } + ], + "id": 5777, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1226:7:23", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes20_$", + "typeString": "type(bytes20)" + }, + "typeName": { + "id": 5776, + "name": "bytes20", + "nodeType": "ElementaryTypeName", + "src": "1226:7:23", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 5782, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1226:22:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1206:42:23" + }, + { + "assignments": [ + 5785 + ], + "declarations": [ + { + "constant": false, + "id": 5785, + "mutability": "mutable", + "name": "rtn", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5813, + "src": "1258:16:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5784, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1258:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5790, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "3230", + "id": 5788, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1287:2:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + } + ], + "id": 5787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "1277:9:23", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (uint256) pure returns (bytes memory)" + }, + "typeName": { + "id": 5786, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1281:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + } + }, + "id": 5789, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1277:13:23", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1258:32:23" + }, + { + "body": { + "id": 5809, + "nodeType": "Block", + "src": "1331:46:23", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 5807, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5801, + "name": "rtn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5785, + "src": "1345:3:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 5803, + "indexExpression": { + "argumentTypes": null, + "id": 5802, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "1349:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1345:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 5804, + "name": "addrBytes", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5775, + "src": "1354:9:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes20", + "typeString": "bytes20" + } + }, + "id": 5806, + "indexExpression": { + "argumentTypes": null, + "id": 5805, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "1364:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1354:12:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "src": "1345:21:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + "id": 5808, + "nodeType": "ExpressionStatement", + "src": "1345:21:23" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 5797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 5795, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "1318:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3230", + "id": 5796, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1322:2:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_20_by_1", + "typeString": "int_const 20" + }, + "value": "20" + }, + "src": "1318:6:23", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 5810, + "initializationExpression": { + "assignments": [ + 5792 + ], + "declarations": [ + { + "constant": false, + "id": 5792, + "mutability": "mutable", + "name": "i", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5810, + "src": "1305:7:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 5791, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1305:5:23", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 5794, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 5793, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1315:1:23", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1305:11:23" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 5799, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1326:3:23", + "subExpression": { + "argumentTypes": null, + "id": 5798, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5792, + "src": "1326:1:23", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 5800, + "nodeType": "ExpressionStatement", + "src": "1326:3:23" + }, + "nodeType": "ForStatement", + "src": "1300:77:23" + }, + { + "expression": { + "argumentTypes": null, + "id": 5811, + "name": "rtn", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5785, + "src": "1393:3:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "functionReturnParameters": 5773, + "id": 5812, + "nodeType": "Return", + "src": "1386:10:23" + } + ] + }, + "documentation": null, + "id": 5814, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "addressToBytes", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5770, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5769, + "mutability": "mutable", + "name": "addr", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5814, + "src": "1145:12:23", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5768, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1145:7:23", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1144:14:23" + }, + "returnParameters": { + "id": 5773, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5772, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5814, + "src": "1182:12:23", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5771, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1182:5:23", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1181:14:23" + }, + "scope": 5815, + "src": "1121:282:23", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 5816, + "src": "306:1099:23" + } + ], + "src": "32:1373:23" + }, + "id": 23 + }, + "contracts/test/TestNFT1155.sol": { + "ast": { + "absolutePath": "contracts/test/TestNFT1155.sol", + "exportedSymbols": { + "TestNFT1155": [ + 5866 + ] + }, + "id": 5867, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5817, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:24" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "file": "@openzeppelin/contracts/token/ERC1155/ERC1155.sol", + "id": 5818, + "nodeType": "ImportDirective", + "scope": 5867, + "sourceUnit": 1542, + "src": "66:59:24", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "546573744e465431313535", + "id": 5820, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "159:13:24", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4e7ef30cf1c151bd2081cdca5ece8f689dad234b0ab720cc907dc2ec5c6ba109", + "typeString": "literal_string \"TestNFT1155\"" + }, + "value": "TestNFT1155" + } + ], + "baseName": { + "contractScope": null, + "id": 5819, + "name": "ERC1155", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1541, + "src": "151:7:24", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC1155_$1541", + "typeString": "contract ERC1155" + } + }, + "id": 5821, + "nodeType": "InheritanceSpecifier", + "src": "151:22:24" + } + ], + "contractDependencies": [ + 166, + 178, + 1541, + 1697, + 1712, + 3286 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5866, + "linearizedBaseContracts": [ + 5866, + 1541, + 1712, + 1697, + 166, + 178, + 3286 + ], + "name": "TestNFT1155", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 5824, + "nodeType": "Block", + "src": "202:7:24", + "statements": [] + }, + "documentation": null, + "id": 5825, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5822, + "nodeType": "ParameterList", + "parameters": [], + "src": "192:2:24" + }, + "returnParameters": { + "id": 5823, + "nodeType": "ParameterList", + "parameters": [], + "src": "202:0:24" + }, + "scope": 5866, + "src": "181:28:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 5843, + "nodeType": "Block", + "src": "302:49:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5837, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5827, + "src": "318:7:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5838, + "name": "id", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5829, + "src": "327:2:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5839, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5831, + "src": "331:6:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 5840, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5833, + "src": "339:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5836, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1089, + "src": "312:5:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256,uint256,bytes memory)" + } + }, + "id": 5841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "312:32:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5842, + "nodeType": "ExpressionStatement", + "src": "312:32:24" + } + ] + }, + "documentation": null, + "functionSelector": "731133e9", + "id": 5844, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5834, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5827, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5844, + "src": "229:15:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5826, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "229:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5829, + "mutability": "mutable", + "name": "id", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5844, + "src": "246:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5828, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "246:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5831, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5844, + "src": "258:14:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 5830, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "258:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5833, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5844, + "src": "274:17:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5832, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "274:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "228:64:24" + }, + "returnParameters": { + "id": 5835, + "nodeType": "ParameterList", + "parameters": [], + "src": "302:0:24" + }, + "scope": 5866, + "src": "215:136:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 5864, + "nodeType": "Block", + "src": "464:51:24", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 5858, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5846, + "src": "485:2:24", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 5859, + "name": "ids", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5849, + "src": "489:3:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 5860, + "name": "amounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5852, + "src": "494:7:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + { + "argumentTypes": null, + "id": 5861, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5854, + "src": "503:4:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 5857, + "name": "_mintBatch", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1197, + "src": "474:10:24", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,uint256[] memory,uint256[] memory,bytes memory)" + } + }, + "id": 5862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "474:34:24", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 5863, + "nodeType": "ExpressionStatement", + "src": "474:34:24" + } + ] + }, + "documentation": null, + "functionSelector": "1f7fdffa", + "id": 5865, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mintBatch", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 5855, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 5846, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5865, + "src": "376:10:24", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5845, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "376:7:24", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5849, + "mutability": "mutable", + "name": "ids", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5865, + "src": "388:20:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5847, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "388:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5848, + "length": null, + "nodeType": "ArrayTypeName", + "src": "388:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5852, + "mutability": "mutable", + "name": "amounts", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5865, + "src": "410:24:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 5850, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "410:7:24", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 5851, + "length": null, + "nodeType": "ArrayTypeName", + "src": "410:9:24", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5854, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 5865, + "src": "436:17:24", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 5853, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "436:5:24", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "375:79:24" + }, + "returnParameters": { + "id": 5856, + "nodeType": "ParameterList", + "parameters": [], + "src": "464:0:24" + }, + "scope": 5866, + "src": "357:158:24", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 5867, + "src": "127:390:24" + } + ], + "src": "33:484:24" + }, + "id": 24 + }, + "contracts/test/TestNFT721.sol": { + "ast": { + "absolutePath": "contracts/test/TestNFT721.sol", + "exportedSymbols": { + "TestNFT721": [ + 5874 + ] + }, + "id": 5875, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 5868, + "literals": [ + "solidity", + ">=", + "0.6", + ".0", + "<", + "0.8", + ".0" + ], + "nodeType": "PragmaDirective", + "src": "33:31:25" + }, + { + "absolutePath": "@openzeppelin/contracts/token/ERC721/ERC721.sol", + "file": "@openzeppelin/contracts/token/ERC721/ERC721.sol", + "id": 5869, + "nodeType": "ImportDirective", + "scope": 5875, + "sourceUnit": 2776, + "src": "66:57:25", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [ + { + "arguments": [ + { + "argumentTypes": null, + "hexValue": "546573744e4654373231", + "id": 5871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "155:12:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4fd6643909fa794bc41df466d4fdeb741d6a0c8f1d8c9059eb9683d13aea01a2", + "typeString": "literal_string \"TestNFT721\"" + }, + "value": "TestNFT721" + }, + { + "argumentTypes": null, + "hexValue": "4e4654373231", + "id": 5872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "169:8:25", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8a8c2792a2f5a84bbf05fe0a1df03ab126fed55e71b5a1174e2deb7a6bd71693", + "typeString": "literal_string \"NFT721\"" + }, + "value": "NFT721" + } + ], + "baseName": { + "contractScope": null, + "id": 5870, + "name": "ERC721", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2775, + "src": "148:6:25", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC721_$2775", + "typeString": "contract ERC721" + } + }, + "id": 5873, + "nodeType": "InheritanceSpecifier", + "src": "148:30:25" + } + ], + "contractDependencies": [ + 166, + 178, + 2775, + 2891, + 2922, + 2949, + 3286 + ], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 5874, + "linearizedBaseContracts": [ + 5874, + 2775, + 2922, + 2949, + 2891, + 166, + 178, + 3286 + ], + "name": "TestNFT721", + "nodeType": "ContractDefinition", + "nodes": [], + "scope": 5875, + "src": "125:62:25" + } + ], + "src": "33:154:25" + }, + "id": 25 + } + } + } +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/build-info/4aacc3b670db955d3261359ab52c871b.json b/projects/Team-7-DeDrops/contract/artifacts/build-info/4aacc3b670db955d3261359ab52c871b.json new file mode 100644 index 0000000..ad5dce3 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/build-info/4aacc3b670db955d3261359ab52c871b.json @@ -0,0 +1,4422 @@ +{ + "id": "4aacc3b670db955d3261359ab52c871b", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.12", + "solcLongVersion": "0.6.12+commit.27d51765", + "input": { + "language": "Solidity", + "sources": { + "contracts/interfaces/IERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n\ninterface IERC20 {\n function totalSupply() external view returns (uint256);\n function balanceOf(address account) external view returns (uint256);\n function allowance(address owner, address spender) external view returns (uint256);\n function approve(address spender, uint256 amount) external returns (bool);\n event Transfer(address indexed from, address indexed to, uint256 value);\n event Approval(address indexed owner, address indexed spender, uint256 value);\n\n // EIP 2612\n function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;\n}" + }, + "contracts/libraries/SafeERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n\nimport \"../interfaces/IERC20.sol\";\n\nlibrary SafeERC20 {\n function safeSymbol(IERC20 token) internal view returns(string memory) {\n (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41));\n return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\n }\n\n function safeName(IERC20 token) internal view returns(string memory) {\n (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03));\n return success && data.length > 0 ? abi.decode(data, (string)) : \"???\";\n }\n\n function safeDecimals(IERC20 token) public view returns (uint8) {\n (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567));\n return success && data.length == 32 ? abi.decode(data, (uint8)) : 18;\n }\n\n function safeTransfer(IERC20 token, address to, uint256 amount) internal {\n (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount));\n require(success && (data.length == 0 || abi.decode(data, (bool))), \"SafeERC20: Transfer failed\");\n }\n\n function safeTransferFrom(IERC20 token, address from, uint256 amount) internal {\n (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, address(this), amount));\n require(success && (data.length == 0 || abi.decode(data, (bool))), \"SafeERC20: TransferFrom failed\");\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "contracts/interfaces/IERC20.sol": { + "IERC20": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "", + "opcodes": "", + "sourceMap": "" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "totalSupply()": "18160ddd" + } + } + } + }, + "contracts/libraries/SafeERC20.sol": { + "SafeERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "IERC20" + } + ], + "name": "safeDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "6101b8610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806372a58ae11461003a575b600080fd5b6100606004803603602081101561005057600080fd5b50356001600160a01b0316610076565b6040805160ff9092168252519081900360200190f35b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815160009384936060936001600160a01b03881693919290918291908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b5091509150818015610157575080516020145b61016257601261017a565b80806020019051602081101561017757600080fd5b50515b94935050505056fea2646970667358221220a1d1a31b24fc42d9f594e24c83319b7b8be1e8512efe81989bf635d00d446ac964736f6c634300060c0033", + "opcodes": "PUSH2 0x1B8 PUSH2 0x26 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH2 0x19 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72A58AE1 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x60 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x60 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x13F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x144 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x157 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST PUSH2 0x162 JUMPI PUSH1 0x12 PUSH2 0x17A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 0xD1 LOG3 SHL 0x24 0xFC TIMESTAMP 0xD9 CREATE2 SWAP5 0xE2 0x4C DUP4 BALANCE SWAP12 PUSH28 0x8BE1E8512EFE81989BF635D00D446AC964736F6C634300060C003300 ", + "sourceMap": "93:1459:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806372a58ae11461003a575b600080fd5b6100606004803603602081101561005057600080fd5b50356001600160a01b0316610076565b6040805160ff9092168252519081900360200190f35b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815160009384936060936001600160a01b03881693919290918291908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b5091509150818015610157575080516020145b61016257601261017a565b80806020019051602081101561017757600080fd5b50515b94935050505056fea2646970667358221220a1d1a31b24fc42d9f594e24c83319b7b8be1e8512efe81989bf635d00d446ac964736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x35 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x72A58AE1 EQ PUSH2 0x3A JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x60 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x76 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x4 DUP2 MSTORE PUSH1 0x24 DUP2 ADD DUP3 MSTORE PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xE0 SHL SUB AND PUSH4 0x313CE567 PUSH1 0xE0 SHL OR DUP2 MSTORE SWAP2 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP4 DUP5 SWAP4 PUSH1 0x60 SWAP4 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP9 AND SWAP4 SWAP2 SWAP3 SWAP1 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDF JUMPI DUP1 MLOAD DUP3 MSTORE PUSH1 0x1F NOT SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xC0 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS STATICCALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x13F JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x144 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x157 JUMPI POP DUP1 MLOAD PUSH1 0x20 EQ JUMPDEST PUSH2 0x162 JUMPI PUSH1 0x12 PUSH2 0x17A JUMP JUMPDEST DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 LOG1 0xD1 LOG3 SHL 0x24 0xFC TIMESTAMP 0xD9 CREATE2 SWAP5 0xE2 0x4C DUP4 BALANCE SWAP12 PUSH28 0x8BE1E8512EFE81989BF635D00D446AC964736F6C634300060C003300 ", + "sourceMap": "93:1459:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;657:256;;;;;;;;;;;;;;;;-1:-1:-1;657:256:1;-1:-1:-1;;;;;657:256:1;;:::i;:::-;;;;;;;;;;;;;;;;;;;;793:34;;;;;;;;;;;;;;;;-1:-1:-1;;;;;793:34:1;-1:-1:-1;;;793:34:1;;;767:61;;;;714:5;;;;746:17;;-1:-1:-1;;;;;767:25:1;;;793:34;;767:61;;;;793:34;767:61;;793:34;767:61;;;;;;;;;;-1:-1:-1;;767:61:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;731:97;;;;845:7;:28;;;;;856:4;:11;871:2;856:17;845:28;:61;;904:2;845:61;;;887:4;876:25;;;;;;;;;;;;;;;-1:-1:-1;876:25:1;845:61;838:68;657:256;-1:-1:-1;;;;657:256:1:o" + }, + "methodIdentifiers": { + "safeDecimals(IERC20)": "72a58ae1" + } + } + } + } + }, + "sources": { + "contracts/interfaces/IERC20.sol": { + "ast": { + "absolutePath": "contracts/interfaces/IERC20.sol", + "exportedSymbols": { + "IERC20": [ + 65 + ] + }, + "id": 66, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "32:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "interface", + "documentation": null, + "fullyImplemented": false, + "id": 65, + "linearizedBaseContracts": [ + 65 + ], + "name": "IERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "documentation": null, + "functionSelector": "18160ddd", + "id": 6, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 2, + "nodeType": "ParameterList", + "parameters": [], + "src": "100:2:0" + }, + "returnParameters": { + "id": 5, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 6, + "src": "126:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 3, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "126:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "125:9:0" + }, + "scope": 65, + "src": "80:55:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "70a08231", + "id": 13, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "account", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "159:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 7, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "159:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "158:17:0" + }, + "returnParameters": { + "id": 12, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 11, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 13, + "src": "199:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 10, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "199:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "198:9:0" + }, + "scope": 65, + "src": "140:68:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "dd62ed3e", + "id": 22, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 18, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 22, + "src": "232:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 14, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "232:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 17, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 22, + "src": "247:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 16, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "247:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "231:32:0" + }, + "returnParameters": { + "id": 21, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 22, + "src": "287:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 19, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "287:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "286:9:0" + }, + "scope": 65, + "src": "213:83:0", + "stateMutability": "view", + "virtual": false, + "visibility": "external" + }, + { + "body": null, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 31, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 27, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 24, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 31, + "src": "318:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 23, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "318:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 26, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 31, + "src": "335:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 25, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "335:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "317:33:0" + }, + "returnParameters": { + "id": 30, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 29, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 31, + "src": "369:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 28, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "369:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "368:6:0" + }, + "scope": 65, + "src": "301:74:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "anonymous": false, + "documentation": null, + "id": 39, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 38, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 33, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 39, + "src": "395:20:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 32, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "395:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 39, + "src": "417:18:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 34, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "417:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 37, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 39, + "src": "437:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "437:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "394:57:0" + }, + "src": "380:72:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 47, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 46, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 41, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 47, + "src": "472:21:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 43, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 47, + "src": "495:23:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 42, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "495:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 45, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 47, + "src": "520:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 44, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "520:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "471:63:0" + }, + "src": "457:78:0" + }, + { + "body": null, + "documentation": null, + "functionSelector": "d505accf", + "id": 64, + "implemented": false, + "kind": "function", + "modifiers": [], + "name": "permit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "573:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "573:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 51, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "588:15:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 50, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "588:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 53, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "605:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 52, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "605:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 55, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "620:16:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 54, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "620:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 57, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "638:7:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 56, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "638:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 59, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "647:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 58, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "647:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 61, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 64, + "src": "658:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 60, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "658:7:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "572:96:0" + }, + "returnParameters": { + "id": 63, + "nodeType": "ParameterList", + "parameters": [], + "src": "677:0:0" + }, + "scope": 65, + "src": "557:121:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 66, + "src": "57:623:0" + } + ], + "src": "32:648:0" + }, + "id": 0 + }, + "contracts/libraries/SafeERC20.sol": { + "ast": { + "absolutePath": "contracts/libraries/SafeERC20.sol", + "exportedSymbols": { + "SafeERC20": [ + 282 + ] + }, + "id": 283, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 67, + "literals": [ + "solidity", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "32:23:1" + }, + { + "absolutePath": "contracts/interfaces/IERC20.sol", + "file": "../interfaces/IERC20.sol", + "id": 68, + "nodeType": "ImportDirective", + "scope": 283, + "sourceUnit": 66, + "src": "57:34:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 282, + "linearizedBaseContracts": [ + 282 + ], + "name": "SafeERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 106, + "nodeType": "Block", + "src": "188:194:1", + "statements": [ + { + "assignments": [ + 76, + 78 + ], + "declarations": [ + { + "constant": false, + "id": 76, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 106, + "src": "199:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 75, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "199:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 106, + "src": "213:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 77, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "213:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 89, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783935643839623431", + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "283:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2514000705_by_1", + "typeString": "int_const 2514000705" + }, + "value": "0x95d89b41" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2514000705_by_1", + "typeString": "int_const 2514000705" + } + ], + "expression": { + "argumentTypes": null, + "id": 84, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "260:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "260:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "260:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 81, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 70, + "src": "242:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + ], + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "234:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "234:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "234:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "234:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "234:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "198:97:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 90, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 76, + "src": "312:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 94, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 91, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "323:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "323:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "337:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "323:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "312:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "hexValue": "3f3f3f", + "id": 103, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "370:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187", + "typeString": "literal_string \"???\"" + }, + "value": "???" + }, + "id": 104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "312:63:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 98, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "352:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 100, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "359:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 99, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "359:6:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 101, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "358:8:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + ], + "expression": { + "argumentTypes": null, + "id": 96, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "341:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 97, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "341:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 102, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "341:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 74, + "id": 105, + "nodeType": "Return", + "src": "305:70:1" + } + ] + }, + "documentation": null, + "id": 107, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeSymbol", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 70, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 107, + "src": "137:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 69, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 65, + "src": "137:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "136:14:1" + }, + "returnParameters": { + "id": 74, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 73, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 107, + "src": "173:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 72, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "173:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "172:15:1" + }, + "scope": 282, + "src": "117:265:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 145, + "nodeType": "Block", + "src": "457:194:1", + "statements": [ + { + "assignments": [ + 115, + 117 + ], + "declarations": [ + { + "constant": false, + "id": 115, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 145, + "src": "468:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 114, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "468:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 117, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 145, + "src": "482:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 116, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "482:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 128, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783036666464653033", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "552:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_117300739_by_1", + "typeString": "int_const 117300739" + }, + "value": "0x06fdde03" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_117300739_by_1", + "typeString": "int_const 117300739" + } + ], + "expression": { + "argumentTypes": null, + "id": 123, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "529:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 124, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "529:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "529:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 109, + "src": "511:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + ], + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "503:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 118, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "503:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "503:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "503:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "503:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "467:97:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 134, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 129, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 115, + "src": "581:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 133, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 130, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "592:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "592:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "606:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "592:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "581:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "hexValue": "3f3f3f", + "id": 142, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "639:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ad68b4dd5516c9b8c2050c111c09e315e44fd13499c6724a87c1b4642b615187", + "typeString": "literal_string \"???\"" + }, + "value": "???" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "581:63:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 137, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "621:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "628:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": { + "id": 138, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "628:6:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 140, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "627:8:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + } + ], + "expression": { + "argumentTypes": null, + "id": 135, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "610:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "610:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "610:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "functionReturnParameters": 113, + "id": 144, + "nodeType": "Return", + "src": "574:70:1" + } + ] + }, + "documentation": null, + "id": 146, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeName", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 110, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 109, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 146, + "src": "406:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 108, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 65, + "src": "406:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "405:14:1" + }, + "returnParameters": { + "id": 113, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 112, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 146, + "src": "442:13:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 111, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "442:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "441:15:1" + }, + "scope": 282, + "src": "388:263:1", + "stateMutability": "view", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 184, + "nodeType": "Block", + "src": "721:192:1", + "statements": [ + { + "assignments": [ + 154, + 156 + ], + "declarations": [ + { + "constant": false, + "id": 154, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 184, + "src": "732:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 153, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "732:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 156, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 184, + "src": "746:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 155, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "746:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 167, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783331336365353637", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "816:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_826074471_by_1", + "typeString": "int_const 826074471" + }, + "value": "0x313ce567" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_826074471_by_1", + "typeString": "int_const 826074471" + } + ], + "expression": { + "argumentTypes": null, + "id": 162, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "793:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "793:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "793:34:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 159, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "775:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + ], + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "767:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "767:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "767:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "staticcall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "767:25:1", + "typeDescriptions": { + "typeIdentifier": "t_function_barestaticcall_view$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) view returns (bool,bytes memory)" + } + }, + "id": 166, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "767:61:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "731:97:1" + }, + { + "expression": { + "argumentTypes": null, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 168, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "845:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 169, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "856:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "856:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "3332", + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "871:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_32_by_1", + "typeString": "int_const 32" + }, + "value": "32" + }, + "src": "856:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "845:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseExpression": { + "argumentTypes": null, + "hexValue": "3138", + "id": 181, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "904:2:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "Conditional", + "src": "845:61:1", + "trueExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 176, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "887:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "894:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + }, + "typeName": { + "id": 177, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "894:5:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 179, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "893:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_uint8_$", + "typeString": "type(uint8)" + } + ], + "expression": { + "argumentTypes": null, + "id": 174, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "876:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 175, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "876:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "876:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 152, + "id": 183, + "nodeType": "Return", + "src": "838:68:1" + } + ] + }, + "documentation": null, + "functionSelector": "72a58ae1", + "id": 185, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeDecimals", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 148, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 185, + "src": "679:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 147, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 65, + "src": "679:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "678:14:1" + }, + "returnParameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 185, + "src": "714:5:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 150, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "713:7:1" + }, + "scope": 282, + "src": "657:256:1", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 230, + "nodeType": "Block", + "src": "992:226:1", + "statements": [ + { + "assignments": [ + 195, + 197 + ], + "declarations": [ + { + "constant": false, + "id": 195, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 230, + "src": "1003:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 194, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1003:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 230, + "src": "1017:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 196, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1017:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 210, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30786139303539636262", + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1081:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + "value": "0xa9059cbb" + }, + { + "argumentTypes": null, + "id": 206, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "1093:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 207, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 191, + "src": "1097:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_2835717307_by_1", + "typeString": "int_const 2835717307" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 203, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1058:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1058:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1058:46:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 200, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1046:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + ], + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1038:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 198, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1038:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 201, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1038:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 209, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1038:67:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1002:103:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 212, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1123:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 213, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 197, + "src": "1135:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1135:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 215, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1150:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1135:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 219, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 197, + "src": "1166:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 221, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1173:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 220, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1173:4:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 222, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1172:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "argumentTypes": null, + "id": 217, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1155:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1155:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1155:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1135:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 225, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1134:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1123:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a205472616e73666572206661696c6564", + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1182:28:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_be8d54a8abe4cf8e9cfb199d6cc3388598801316dc28d943c5ed8f2b4a3ca180", + "typeString": "literal_string \"SafeERC20: Transfer failed\"" + }, + "value": "SafeERC20: Transfer failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_be8d54a8abe4cf8e9cfb199d6cc3388598801316dc28d943c5ed8f2b4a3ca180", + "typeString": "literal_string \"SafeERC20: Transfer failed\"" + } + ], + "id": 211, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1115:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 228, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1115:96:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 229, + "nodeType": "ExpressionStatement", + "src": "1115:96:1" + } + ] + }, + "documentation": null, + "id": 231, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 192, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 231, + "src": "941:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 186, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 65, + "src": "941:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 189, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 231, + "src": "955:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 188, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "955:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 231, + "src": "967:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 190, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "967:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "940:42:1" + }, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "992:0:1" + }, + "scope": 282, + "src": "919:299:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 280, + "nodeType": "Block", + "src": "1303:247:1", + "statements": [ + { + "assignments": [ + 241, + 243 + ], + "declarations": [ + { + "constant": false, + "id": 241, + "mutability": "mutable", + "name": "success", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1314:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 240, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1314:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "mutability": "mutable", + "name": "data", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 280, + "src": "1328:17:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 242, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1328:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 260, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783233623837326464", + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1392:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + "value": "0x23b872dd" + }, + { + "argumentTypes": null, + "id": 252, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 235, + "src": "1404:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 255, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1418:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeERC20_$282", + "typeString": "library SafeERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SafeERC20_$282", + "typeString": "library SafeERC20" + } + ], + "id": 254, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1410:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1410:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1410:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 257, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "1425:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_599290589_by_1", + "typeString": "int_const 599290589" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 249, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1369:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 250, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSelector", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1369:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (bytes4) pure returns (bytes memory)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1369:63:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 246, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 233, + "src": "1357:5:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + ], + "id": 245, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1349:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 244, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1349:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 247, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1349:14:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1349:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "function (bytes memory) payable returns (bool,bytes memory)" + } + }, + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1349:84:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$", + "typeString": "tuple(bool,bytes memory)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1313:120:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 262, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 241, + "src": "1451:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 263, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "1463:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1463:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1478:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1463:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 269, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "1494:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1501:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + }, + "typeName": { + "id": 270, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1501:4:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + } + ], + "id": 272, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1500:6:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_type$_t_bool_$", + "typeString": "type(bool)" + } + ], + "expression": { + "argumentTypes": null, + "id": 267, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1483:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "decode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1483:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abidecode_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1483:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1463:44:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "id": 275, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "1462:46:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1451:57:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "5361666545524332303a205472616e7366657246726f6d206661696c6564", + "id": 277, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1510:32:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b872e3240d39ac1d2b2aa2a4c025a8b5fa05fc43cbea611276f3ce3be8620cd", + "typeString": "literal_string \"SafeERC20: TransferFrom failed\"" + }, + "value": "SafeERC20: TransferFrom failed" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b872e3240d39ac1d2b2aa2a4c025a8b5fa05fc43cbea611276f3ce3be8620cd", + "typeString": "literal_string \"SafeERC20: TransferFrom failed\"" + } + ], + "id": 261, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1443:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1443:100:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 279, + "nodeType": "ExpressionStatement", + "src": "1443:100:1" + } + ] + }, + "documentation": null, + "id": 281, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "safeTransferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 238, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 233, + "mutability": "mutable", + "name": "token", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 281, + "src": "1250:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + }, + "typeName": { + "contractScope": null, + "id": 232, + "name": "IERC20", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 65, + "src": "1250:6:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_IERC20_$65", + "typeString": "contract IERC20" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 235, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 281, + "src": "1264:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 234, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1264:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 237, + "mutability": "mutable", + "name": "amount", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 281, + "src": "1278:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 236, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1249:44:1" + }, + "returnParameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [], + "src": "1303:0:1" + }, + "scope": 282, + "src": "1224:326:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 283, + "src": "93:1459:1" + } + ], + "src": "32:1521:1" + }, + "id": 1 + } + } + } +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/build-info/635883b35bf7d1915fb55ff78885e0c2.json b/projects/Team-7-DeDrops/contract/artifacts/build-info/635883b35bf7d1915fb55ff78885e0c2.json new file mode 100644 index 0000000..01033c0 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/build-info/635883b35bf7d1915fb55ff78885e0c2.json @@ -0,0 +1,8258 @@ +{ + "id": "635883b35bf7d1915fb55ff78885e0c2", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.12", + "solcLongVersion": "0.6.12+commit.27d51765", + "input": { + "language": "Solidity", + "sources": { + "contracts/libraries/SafeMath.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity 0.6.12;\n// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math)\nlibrary SafeMath {\n function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, \"SafeMath: Add Overflow\");}\n function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, \"SafeMath: Underflow\");}\n function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, \"SafeMath: Mul Overflow\");}\n function to128(uint256 a) internal pure returns (uint128 c) {\n require(a <= uint128(-1), \"SafeMath: uint128 Overflow\");\n c = uint128(a);\n }\n}\n\nlibrary SafeMath128 {\n function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, \"SafeMath: Add Overflow\");}\n function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, \"SafeMath: Underflow\");}\n}\n" + }, + "contracts/test/MockERC20.sol": { + "content": "// SPDX-License-Identifier: MIT\npragma solidity >=0.6.6;\n\nimport '../libraries/SafeMath.sol';\n\ncontract MockERC20 {\n using SafeMath for uint;\n\n string public constant name = 'Test Token';\n string public symbol;\n uint8 public decimals;\n uint public totalSupply;\n mapping(address => uint) public balanceOf;\n mapping(address => mapping(address => uint)) public allowance;\n\n bytes32 public DOMAIN_SEPARATOR;\n // keccak256(\"Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)\");\n bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;\n mapping(address => uint) public nonces;\n\n event Approval(address indexed owner, address indexed spender, uint value);\n event Transfer(address indexed from, address indexed to, uint value);\n\n constructor(string memory _symbol, uint _totalSupply, uint8 _decimals) public {\n uint chainId;\n assembly {\n chainId := chainid()\n }\n DOMAIN_SEPARATOR = keccak256(\n abi.encode(\n keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),\n keccak256(bytes(name)),\n keccak256(bytes('1')),\n chainId,\n address(this)\n )\n );\n symbol = _symbol;\n decimals = _decimals;\n _mint(msg.sender, _totalSupply);\n }\n\n function _mint(address to, uint value) internal {\n totalSupply = totalSupply.add(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(address(0), to, value);\n }\n\n function _burn(address from, uint value) internal {\n balanceOf[from] = balanceOf[from].sub(value);\n totalSupply = totalSupply.sub(value);\n emit Transfer(from, address(0), value);\n }\n\n function _approve(address owner, address spender, uint value) private {\n allowance[owner][spender] = value;\n emit Approval(owner, spender, value);\n }\n\n function _transfer(address from, address to, uint value) private {\n balanceOf[from] = balanceOf[from].sub(value);\n balanceOf[to] = balanceOf[to].add(value);\n emit Transfer(from, to, value);\n }\n\n function approve(address spender, uint value) external returns (bool) {\n _approve(msg.sender, spender, value);\n return true;\n }\n\n function transfer(address to, uint value) external returns (bool) {\n _transfer(msg.sender, to, value);\n return true;\n }\n\n function transferFrom(address from, address to, uint value) external returns (bool) {\n if (allowance[from][msg.sender] != uint(-1)) {\n allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);\n }\n _transfer(from, to, value);\n return true;\n }\n\n function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external {\n require(deadline >= block.timestamp, 'EXPIRED');\n bytes32 digest = keccak256(\n abi.encodePacked(\n '\\x19\\x01',\n DOMAIN_SEPARATOR,\n keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))\n )\n );\n address recoveredAddress = ecrecover(digest, v, r, s);\n require(recoveredAddress != address(0) && recoveredAddress == owner, 'INVALID_SIGNATURE');\n _approve(owner, spender, value);\n }\n}\n" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "contracts/libraries/SafeMath.sol": { + "SafeMath": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d72186fa182d6af9310a538615aa0a27ed733e843c1a16e093c39be567e47664736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD7 0x21 DUP7 STATICCALL XOR 0x2D PUSH11 0xF9310A538615AA0A27ED73 RETURNDATACOPY DUP5 EXTCODECOPY BYTE AND 0xE0 SWAP4 0xC3 SWAP12 0xE5 PUSH8 0xE47664736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "182:574:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d72186fa182d6af9310a538615aa0a27ed733e843c1a16e093c39be567e47664736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 OR 0xD7 0x21 DUP7 STATICCALL XOR 0x2D PUSH11 0xF9310A538615AA0A27ED73 RETURNDATACOPY DUP5 EXTCODECOPY BYTE AND 0xE0 SWAP4 0xC3 SWAP12 0xE5 PUSH8 0xE47664736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "182:574:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + }, + "SafeMath128": { + "abi": [], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa6e57a2f33c5a3f3be53451e12da38f37a6c8a5ea647ec75b19c38c3536ab0964736f6c634300060c0033", + "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL PUSH15 0x57A2F33C5A3F3BE53451E12DA38F37 0xA6 0xC8 0xA5 0xEA PUSH5 0x7EC75B19C3 DUP13 CALLDATALOAD CALLDATASIZE 0xAB MULMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "758:276:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa6e57a2f33c5a3f3be53451e12da38f37a6c8a5ea647ec75b19c38c3536ab0964736f6c634300060c0033", + "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 STATICCALL PUSH15 0x57A2F33C5A3F3BE53451E12DA38F37 0xA6 0xC8 0xA5 0xEA PUSH5 0x7EC75B19C3 DUP13 CALLDATALOAD CALLDATASIZE 0xAB MULMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "758:276:0:-:0;;;;;;;;" + }, + "methodIdentifiers": {} + } + } + }, + "contracts/test/MockERC20.sol": { + "MockERC20": { + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_totalSupply", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b5060405162000c6538038062000c658339818101604052606081101561003557600080fd5b810190808051604051939291908464010000000082111561005557600080fd5b90830190602082018581111561006a57600080fd5b825164010000000081118282018810171561008457600080fd5b82525081516020918201929091019080838360005b838110156100b1578181015183820152602001610099565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b506040818152602083810151938201518383018352600a8452692a32b9ba102a37b5b2b760b11b938201939093528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c09092019093528051908201206005558651939550919350916101d891600091908701906102fc565b506001805460ff191660ff84161790556101f233846101fb565b5050505061038f565b6102148160025461029e60201b6106e11790919060201c565b6002556001600160a01b0382166000908152600360209081526040909120546102469183906106e161029e821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b818101818110156102f6576040805162461bcd60e51b815260206004820152601660248201527f536166654d6174683a20416464204f766572666c6f7700000000000000000000604482015290519081900360640190fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061033d57805160ff191683800117855561036a565b8280016001018555821561036a579182015b8281111561036a57825182559160200191906001019061034f565b5061037692915061037a565b5090565b5b80821115610376576000815560010161037b565b6108c6806200039f6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103e7565b6101f161040b565b6040805160ff9092168252519081900360200190f35b610199610414565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041a565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042c565b6100dc61043e565b61017d6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356104cc565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104d9565b005b610199600480360360408110156102f857600080fd5b506001600160a01b03813581169160200135166106c4565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610732565b5060015b92915050565b60025481565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146103d2576001600160a01b03841660009081526004602090815260408083203384529091529020546103ad9083610794565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6103dd8484846107e2565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60015460ff1681565b60055481565b60036020526000908152604090205481565b60066020526000908152604090205481565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b505050505081565b60006103433384846107e2565b42841015610518576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6005546001600160a01b0380891660008181526006602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106695750886001600160a01b0316816001600160a01b0316145b6106ae576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6106b9898989610732565b505050505050505050565b600460209081526000928352604080842090915290825290205481565b81810181811015610347576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546108059082610794565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461083490826106e1565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220ce3d71930af266043a300cd4d77527a648fc34debb947613dfd75e29ef848e0964736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xC65 CODESIZE SUB DUP1 PUSH3 0xC65 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x35 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x6A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH2 0x84 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xB1 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x99 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0xDE JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 MSTORE PUSH1 0x20 DUP4 DUP2 ADD MLOAD SWAP4 DUP3 ADD MLOAD DUP4 DUP4 ADD DUP4 MSTORE PUSH1 0xA DUP5 MSTORE PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL SWAP4 DUP3 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x81E8AD438398AB0D4A2A7ECB159490C091BB27C67ACE5181F70084E30FADAEA2 DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP4 MSTORE DUP1 MLOAD SWAP1 DUP3 ADD KECCAK256 PUSH1 0x5 SSTORE DUP7 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP SWAP2 PUSH2 0x1D8 SWAP2 PUSH1 0x0 SWAP2 SWAP1 DUP8 ADD SWAP1 PUSH2 0x2FC JUMP JUMPDEST POP PUSH1 0x1 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0xFF DUP5 AND OR SWAP1 SSTORE PUSH2 0x1F2 CALLER DUP5 PUSH2 0x1FB JUMP JUMPDEST POP POP POP POP PUSH2 0x38F JUMP JUMPDEST PUSH2 0x214 DUP2 PUSH1 0x2 SLOAD PUSH2 0x29E PUSH1 0x20 SHL PUSH2 0x6E1 OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x246 SWAP2 DUP4 SWAP1 PUSH2 0x6E1 PUSH2 0x29E DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x536166654D6174683A20416464204F766572666C6F7700000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0x33D JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0x36A JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0x36A JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0x36A JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0x34F JUMP JUMPDEST POP PUSH2 0x376 SWAP3 SWAP2 POP PUSH2 0x37A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0x376 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0x37B JUMP JUMPDEST PUSH2 0x8C6 DUP1 PUSH3 0x39F PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x40B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x414 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x41A JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42C JUMP JUMPDEST PUSH2 0xDC PUSH2 0x43E JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x732 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3D2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3AD SWAP1 DUP4 PUSH2 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3DD DUP5 DUP5 DUP5 PUSH2 0x7E2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x499 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x7E2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x633 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x669 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6B9 DUP10 DUP10 DUP10 PUSH2 0x732 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x536166654D6174683A20416464204F766572666C6F77 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x536166654D6174683A20556E646572666C6F77 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x805 SWAP1 DUP3 PUSH2 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x834 SWAP1 DUP3 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE RETURNDATASIZE PUSH18 0x930AF266043A300CD4D77527A648FC34DEBB SWAP5 PUSH23 0x13DFD75E29EF848E0964736F6C634300060C0033000000 ", + "sourceMap": "95:3405:1:-:0;;;851:600;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:600:1;;;;;;;;;;-1:-1:-1;851:600:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;851:600:1;;;;;;;;;;;;;1222:4;;;;;;;;-1:-1:-1;;;1222:4:1;;;;;;;1256:10;;;;;;;;;;-1:-1:-1;;;1256:10:1;;;;1065:272;;1093:95;1065:272;;;;1206:22;1065:272;;;;1246:21;851:600;1065:272;;;995:9;1065:272;;;;;;1318:4;1065:272;;;;;;;;;;;;;;;;;;;;;;;;;1042:305;;;;;;1023:16;:324;1357:16;;851:600;;-1:-1:-1;851:600:1;;-1:-1:-1;995:9:1;1357:16;;939:12;;1357:16;;;;;:::i;:::-;-1:-1:-1;1383:8:1;:20;;-1:-1:-1;;1383:20:1;;;;;;;1413:31;1419:10;1431:12;1413:5;:31::i;:::-;851:600;;;;95:3405;;1457:197;1529:22;1545:5;1529:11;;:15;;;;;;:22;;;;:::i;:::-;1515:11;:36;-1:-1:-1;;;;;1577:13:1;;;;;;:9;:13;;;;;;;;;:24;;1595:5;;1577:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1561:13:1;;;;;;:9;:13;;;;;;;;:40;;;;1616:31;;;;;;;1561:13;;;;1616:31;;;;;;;;;;1457:197;;:::o;205:123:0:-;288:5;;;283:16;;;;275:51;;;;;-1:-1:-1;;;275:51:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;205:123;;;;:::o;95:3405:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;95:3405:1;;;-1:-1:-1;95:3405:1;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103e7565b6101f161040b565b6040805160ff9092168252519081900360200190f35b610199610414565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041a565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042c565b6100dc61043e565b61017d6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356104cc565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104d9565b005b610199600480360360408110156102f857600080fd5b506001600160a01b03813581169160200135166106c4565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610732565b5060015b92915050565b60025481565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146103d2576001600160a01b03841660009081526004602090815260408083203384529091529020546103ad9083610794565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6103dd8484846107e2565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60015460ff1681565b60055481565b60036020526000908152604090205481565b60066020526000908152604090205481565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b505050505081565b60006103433384846107e2565b42841015610518576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6005546001600160a01b0380891660008181526006602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106695750886001600160a01b0316816001600160a01b0316145b6106ae576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6106b9898989610732565b505050505050505050565b600460209081526000928352604080842090915290825290205481565b81810181811015610347576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546108059082610794565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461083490826106e1565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220ce3d71930af266043a300cd4d77527a648fc34debb947613dfd75e29ef848e0964736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xCF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x263 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x28F JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2E2 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x207 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x20F JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x235 JUMPI PUSH2 0xCF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xD4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x151 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x191 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1AB JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x1E1 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x1E9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xDC PUSH2 0x310 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x116 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xFE JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x143 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x336 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x34D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x353 JUMP JUMPDEST PUSH2 0x199 PUSH2 0x3E7 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x40B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x199 PUSH2 0x414 JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x41A JUMP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x42C JUMP JUMPDEST PUSH2 0xDC PUSH2 0x43E JUMP JUMPDEST PUSH2 0x17D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x279 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x4CC JUMP JUMPDEST PUSH2 0x2E0 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x4D9 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x199 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2F8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6C4 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xA DUP2 MSTORE PUSH1 0x20 ADD PUSH10 0x2A32B9BA102A37B5B2B7 PUSH1 0xB1 SHL DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x732 JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH1 0x0 NOT EQ PUSH2 0x3D2 JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x3AD SWAP1 DUP4 PUSH2 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x3DD DUP5 DUP5 DUP5 PUSH2 0x7E2 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x6 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x4C4 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x499 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x4C4 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x4A7 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x343 CALLER DUP5 DUP5 PUSH2 0x7E2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x518 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH7 0x11561412549151 PUSH1 0xCA SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x5 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x6 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH2 0x1901 PUSH1 0xF0 SHL PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH1 0x1F NOT DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x633 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH1 0x1F NOT ADD MLOAD SWAP2 POP POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x669 JUMPI POP DUP9 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND DUP2 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND EQ JUMPDEST PUSH2 0x6AE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH17 0x494E56414C49445F5349474E4154555245 PUSH1 0x78 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x6B9 DUP10 DUP10 DUP10 PUSH2 0x732 JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP2 DUP2 ADD DUP2 DUP2 LT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x16 PUSH1 0x24 DUP3 ADD MSTORE PUSH22 0x536166654D6174683A20416464204F766572666C6F77 PUSH1 0x50 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x347 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x13 PUSH1 0x24 DUP3 ADD MSTORE PUSH19 0x536166654D6174683A20556E646572666C6F77 PUSH1 0x68 SHL PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x805 SWAP1 DUP3 PUSH2 0x794 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x834 SWAP1 DUP3 PUSH2 0x6E1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xCE RETURNDATASIZE PUSH18 0x930AF266043A300CD4D77527A648FC34DEBB SWAP5 PUSH23 0x13DFD75E29EF848E0964736F6C634300060C0033000000 ", + "sourceMap": "95:3405:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;150:42;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2265:144;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2265:144:1;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;251:24;;;:::i;:::-;;;;;;;;;;;;;;;;2557:295;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2557:295:1;;;;;;;;;;;;;;;;;:::i;537:108::-;;;:::i;224:21::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;396:31;;;:::i;281:41::-;;;;;;;;;;;;;;;;-1:-1:-1;281:41:1;-1:-1:-1;;;;;281:41:1;;:::i;651:38::-;;;;;;;;;;;;;;;;-1:-1:-1;651:38:1;-1:-1:-1;;;;;651:38:1;;:::i;198:20::-;;;:::i;2415:136::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2415:136:1;;;;;;;;:::i;2858:640::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2858:640:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;328:61;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;328:61:1;;;;;;;;;;:::i;150:42::-;;;;;;;;;;;;;;-1:-1:-1;;;150:42:1;;;;:::o;2265:144::-;2329:4;2345:36;2354:10;2366:7;2375:5;2345:8;:36::i;:::-;-1:-1:-1;2398:4:1;2265:144;;;;;:::o;251:24::-;;;;:::o;2557:295::-;-1:-1:-1;;;;;2655:15:1;;2635:4;2655:15;;;:9;:15;;;;;;;;2671:10;2655:27;;;;;;;;-1:-1:-1;;2655:39:1;2651:138;;-1:-1:-1;;;;;2740:15:1;;;;;;:9;:15;;;;;;;;2756:10;2740:27;;;;;;;;:38;;2772:5;2740:31;:38::i;:::-;-1:-1:-1;;;;;2710:15:1;;;;;;:9;:15;;;;;;;;2726:10;2710:27;;;;;;;:68;2651:138;2798:26;2808:4;2814:2;2818:5;2798:9;:26::i;:::-;-1:-1:-1;2841:4:1;2557:295;;;;;:::o;537:108::-;579:66;537:108;:::o;224:21::-;;;;;;:::o;396:31::-;;;;:::o;281:41::-;;;;;;;;;;;;;:::o;651:38::-;;;;;;;;;;;;;:::o;198:20::-;;;;;;;;;;;;;;;-1:-1:-1;;198:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2415:136::-;2475:4;2491:32;2501:10;2513:2;2517:5;2491:9;:32::i;2858:640::-;3003:15;2991:8;:27;;2983:47;;;;;-1:-1:-1;;;2983:47:1;;;;;;;;;;;;-1:-1:-1;;;2983:47:1;;;;;;;;;;;;;;;3142:16;;-1:-1:-1;;;;;3237:13:1;;;3040:14;3237:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3186:77;;579:66;3186:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3176:88;;;;;;-1:-1:-1;;;3080:198:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3057:231;;;;;;;;;3325:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3040:14;;3237:15;3325:26;;;;;-1:-1:-1;;3325:26:1;;;;;;;;;;3237:15;3325:26;;;;;;;;;;;;;;;-1:-1:-1;;3325:26:1;;-1:-1:-1;;3325:26:1;;;-1:-1:-1;;;;;;;3369:30:1;;;;;;:59;;;3423:5;-1:-1:-1;;;;;3403:25:1;:16;-1:-1:-1;;;;;3403:25:1;;3369:59;3361:89;;;;;-1:-1:-1;;;3361:89:1;;;;;;;;;;;;-1:-1:-1;;;3361:89:1;;;;;;;;;;;;;;;3460:31;3469:5;3476:7;3485:5;3460:8;:31::i;:::-;2858:640;;;;;;;;;:::o;328:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;205:123:0:-;288:5;;;283:16;;;;275:51;;;;;-1:-1:-1;;;275:51:0;;;;;;;;;;;;-1:-1:-1;;;275:51:0;;;;;;;;;;;;;;1871:166:1;-1:-1:-1;;;;;1951:16:1;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;1999:31;;;;;;;;;;;;;;;;;1871:166;;;:::o;333:120:0:-;416:5;;;411:16;;;;403:48;;;;;-1:-1:-1;;;403:48:0;;;;;;;;;;;;-1:-1:-1;;;403:48:0;;;;;;;;;;;;;;2043:216:1;-1:-1:-1;;;;;2136:15:1;;;;;;:9;:15;;;;;;:26;;2156:5;2136:19;:26::i;:::-;-1:-1:-1;;;;;2118:15:1;;;;;;;:9;:15;;;;;;:44;;;;2188:13;;;;;;;:24;;2206:5;2188:17;:24::i;:::-;-1:-1:-1;;;;;2172:13:1;;;;;;;:9;:13;;;;;;;;;:40;;;;2227:25;;;;;;;2172:13;;2227:25;;;;;;;;;;;;;2043:216;;;:::o" + }, + "methodIdentifiers": { + "DOMAIN_SEPARATOR()": "3644e515", + "PERMIT_TYPEHASH()": "30adf81f", + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "name()": "06fdde03", + "nonces(address)": "7ecebe00", + "permit(address,address,uint256,uint256,uint8,bytes32,bytes32)": "d505accf", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd" + } + } + } + } + }, + "sources": { + "contracts/libraries/SafeMath.sol": { + "ast": { + "absolutePath": "contracts/libraries/SafeMath.sol", + "exportedSymbols": { + "SafeMath": [ + 100 + ], + "SafeMath128": [ + 145 + ] + }, + "id": 146, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "32:23:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 100, + "linearizedBaseContracts": [ + 100 + ], + "name": "SafeMath", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 22, + "nodeType": "Block", + "src": "274:54:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 18, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 11, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "284:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 14, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 12, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 3, + "src": "288:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 13, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "292:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "288:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "284:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 16, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "283:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 17, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 5, + "src": "298:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "283:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a20416464204f766572666c6f77", + "id": 19, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "301:24:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f02d8b611206aa71642857a9ec6f62168d0250f1eecc23ad091df8e8e979382", + "typeString": "literal_string \"SafeMath: Add Overflow\"" + }, + "value": "SafeMath: Add Overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0f02d8b611206aa71642857a9ec6f62168d0250f1eecc23ad091df8e8e979382", + "typeString": "literal_string \"SafeMath: Add Overflow\"" + } + ], + "id": 10, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "275:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 20, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "275:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 21, + "nodeType": "ExpressionStatement", + "src": "275:51:0" + } + ] + }, + "documentation": null, + "id": 23, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 6, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 3, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 23, + "src": "218:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "218:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 5, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 23, + "src": "229:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 4, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "229:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "217:22:0" + }, + "returnParameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 8, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 23, + "src": "263:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "263:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "262:11:0" + }, + "scope": 100, + "src": "205:123:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 44, + "nodeType": "Block", + "src": "402:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 40, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 37, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 33, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "412:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 36, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 34, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "416:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 35, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 27, + "src": "420:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "416:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "412:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 38, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "411:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 39, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "426:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "411:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a20556e646572666c6f77", + "id": 41, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "429:21:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fd573542d8dfd23bfc27e1e7f7ed55f267468ab90770c456816ec6b127ffcb2", + "typeString": "literal_string \"SafeMath: Underflow\"" + }, + "value": "SafeMath: Underflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fd573542d8dfd23bfc27e1e7f7ed55f267468ab90770c456816ec6b127ffcb2", + "typeString": "literal_string \"SafeMath: Underflow\"" + } + ], + "id": 32, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "403:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 42, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "403:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 43, + "nodeType": "ExpressionStatement", + "src": "403:48:0" + } + ] + }, + "documentation": null, + "id": 45, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 28, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 25, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 45, + "src": "346:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 24, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "346:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 27, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 45, + "src": "357:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 26, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "357:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "345:22:0" + }, + "returnParameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 30, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 45, + "src": "391:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "391:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "390:11:0" + }, + "scope": 100, + "src": "333:120:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 72, + "nodeType": "Block", + "src": "527:66:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 55, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "536:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "541:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "536:6:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 67, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 62, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 58, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 52, + "src": "547:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 59, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "551:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 60, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "555:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "551:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "547:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 63, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "546:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "/", + "rightExpression": { + "argumentTypes": null, + "id": 64, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 49, + "src": "558:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "546:13:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 66, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "563:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "546:18:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "536:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a204d756c204f766572666c6f77", + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "566:24:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_fea1b777ead0196b7f85e75e95ae94249e7c4e86c9935524bbe866a8fa91b5ca", + "typeString": "literal_string \"SafeMath: Mul Overflow\"" + }, + "value": "SafeMath: Mul Overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_fea1b777ead0196b7f85e75e95ae94249e7c4e86c9935524bbe866a8fa91b5ca", + "typeString": "literal_string \"SafeMath: Mul Overflow\"" + } + ], + "id": 54, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "528:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "528:63:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "528:63:0" + } + ] + }, + "documentation": null, + "id": 73, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "mul", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 47, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 73, + "src": "471:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 46, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "471:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 49, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 73, + "src": "482:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 48, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "482:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "470:22:0" + }, + "returnParameters": { + "id": 53, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 52, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 73, + "src": "516:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 51, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "516:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "515:11:0" + }, + "scope": 100, + "src": "458:135:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 98, + "nodeType": "Block", + "src": "658:96:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 81, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "676:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 85, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "689:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "690:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 83, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "681:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 82, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "681:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 86, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "681:11:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "676:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a2075696e74313238204f766572666c6f77", + "id": 88, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "694:28:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_571c3852a17734fcbbfa42316a8d4fe8c1166a988c10d17ba569218e2a0b2bf0", + "typeString": "literal_string \"SafeMath: uint128 Overflow\"" + }, + "value": "SafeMath: uint128 Overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_571c3852a17734fcbbfa42316a8d4fe8c1166a988c10d17ba569218e2a0b2bf0", + "typeString": "literal_string \"SafeMath: uint128 Overflow\"" + } + ], + "id": 80, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "668:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 89, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "668:55:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 90, + "nodeType": "ExpressionStatement", + "src": "668:55:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 96, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 91, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 78, + "src": "733:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 94, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 75, + "src": "745:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "737:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint128_$", + "typeString": "type(uint128)" + }, + "typeName": { + "id": 92, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "737:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "737:10:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "733:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "id": 97, + "nodeType": "ExpressionStatement", + "src": "733:14:0" + } + ] + }, + "documentation": null, + "id": 99, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "to128", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 75, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 99, + "src": "613:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 74, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "613:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "612:11:0" + }, + "returnParameters": { + "id": 79, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 78, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 99, + "src": "647:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 77, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "647:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "646:11:0" + }, + "scope": 100, + "src": "598:156:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 146, + "src": "182:574:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "library", + "documentation": null, + "fullyImplemented": true, + "id": 145, + "linearizedBaseContracts": [ + 145 + ], + "name": "SafeMath128", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 121, + "nodeType": "Block", + "src": "853:54:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 117, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 110, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "863:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 111, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "867:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 112, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "871:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "867:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "863:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 115, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "862:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 116, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "877:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "862:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a20416464204f766572666c6f77", + "id": 118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "880:24:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f02d8b611206aa71642857a9ec6f62168d0250f1eecc23ad091df8e8e979382", + "typeString": "literal_string \"SafeMath: Add Overflow\"" + }, + "value": "SafeMath: Add Overflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_0f02d8b611206aa71642857a9ec6f62168d0250f1eecc23ad091df8e8e979382", + "typeString": "literal_string \"SafeMath: Add Overflow\"" + } + ], + "id": 109, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "854:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "854:51:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 120, + "nodeType": "ExpressionStatement", + "src": "854:51:0" + } + ] + }, + "documentation": null, + "id": 122, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "add", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 102, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 122, + "src": "797:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 101, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "797:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 122, + "src": "808:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 103, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "808:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "796:22:0" + }, + "returnParameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 122, + "src": "842:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 106, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "842:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "841:11:0" + }, + "scope": 145, + "src": "784:123:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 143, + "nodeType": "Block", + "src": "981:51:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 132, + "name": "c", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 129, + "src": "991:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "995:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 134, + "name": "b", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 126, + "src": "999:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "995:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "991:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + } + ], + "id": 137, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "990:11:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "id": 138, + "name": "a", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 124, + "src": "1005:1:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "src": "990:16:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "536166654d6174683a20556e646572666c6f77", + "id": 140, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1008:21:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fd573542d8dfd23bfc27e1e7f7ed55f267468ab90770c456816ec6b127ffcb2", + "typeString": "literal_string \"SafeMath: Underflow\"" + }, + "value": "SafeMath: Underflow" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fd573542d8dfd23bfc27e1e7f7ed55f267468ab90770c456816ec6b127ffcb2", + "typeString": "literal_string \"SafeMath: Underflow\"" + } + ], + "id": 131, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "982:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "982:48:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 142, + "nodeType": "ExpressionStatement", + "src": "982:48:0" + } + ] + }, + "documentation": null, + "id": 144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "sub", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 127, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 124, + "mutability": "mutable", + "name": "a", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "925:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 123, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "925:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 126, + "mutability": "mutable", + "name": "b", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "936:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 125, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "936:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "924:22:0" + }, + "returnParameters": { + "id": 130, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 129, + "mutability": "mutable", + "name": "c", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "970:9:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + }, + "typeName": { + "id": 128, + "name": "uint128", + "nodeType": "ElementaryTypeName", + "src": "970:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint128", + "typeString": "uint128" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "969:11:0" + }, + "scope": 145, + "src": "912:120:0", + "stateMutability": "pure", + "virtual": false, + "visibility": "internal" + } + ], + "scope": 146, + "src": "758:276:0" + } + ], + "src": "32:1003:0" + }, + "id": 0 + }, + "contracts/test/MockERC20.sol": { + "ast": { + "absolutePath": "contracts/test/MockERC20.sol", + "exportedSymbols": { + "MockERC20": [ + 552 + ] + }, + "id": 553, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 147, + "literals": [ + "solidity", + ">=", + "0.6", + ".6" + ], + "nodeType": "PragmaDirective", + "src": "32:24:1" + }, + { + "absolutePath": "contracts/libraries/SafeMath.sol", + "file": "../libraries/SafeMath.sol", + "id": 148, + "nodeType": "ImportDirective", + "scope": 553, + "sourceUnit": 146, + "src": "58:35:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 552, + "linearizedBaseContracts": [ + 552 + ], + "name": "MockERC20", + "nodeType": "ContractDefinition", + "nodes": [ + { + "id": 151, + "libraryName": { + "contractScope": null, + "id": 149, + "name": "SafeMath", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 100, + "src": "126:8:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SafeMath_$100", + "typeString": "library SafeMath" + } + }, + "nodeType": "UsingForDirective", + "src": "120:24:1", + "typeName": { + "id": 150, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "139:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + { + "constant": true, + "functionSelector": "06fdde03", + "id": 154, + "mutability": "constant", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "150:42:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 152, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "150:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "5465737420546f6b656e", + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "180:12:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2", + "typeString": "literal_string \"Test Token\"" + }, + "value": "Test Token" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "95d89b41", + "id": 156, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "198:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 155, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "198:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "313ce567", + "id": 158, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "224:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 157, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "224:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "18160ddd", + "id": 160, + "mutability": "mutable", + "name": "totalSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "251:24:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 159, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "251:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "70a08231", + "id": 164, + "mutability": "mutable", + "name": "balanceOf", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "281:41:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 163, + "keyType": { + "id": 161, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "281:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 162, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "300:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "dd62ed3e", + "id": 170, + "mutability": "mutable", + "name": "allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "328:61:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 169, + "keyType": { + "id": 165, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "336:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "328:44:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 168, + "keyType": { + "id": 166, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "355:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "347:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 167, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "366:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "3644e515", + "id": 172, + "mutability": "mutable", + "name": "DOMAIN_SEPARATOR", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "396:31:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 171, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "396:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": true, + "functionSelector": "30adf81f", + "id": 175, + "mutability": "constant", + "name": "PERMIT_TYPEHASH", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "537:108:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 173, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "537:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339", + "id": 174, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "579:66:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1", + "typeString": "int_const 4995...(69 digits omitted)...3241" + }, + "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "7ecebe00", + "id": 179, + "mutability": "mutable", + "name": "nonces", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 552, + "src": "651:38:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 178, + "keyType": { + "id": 176, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "659:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "651:24:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 177, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "670:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 187, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 186, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 181, + "indexed": true, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 187, + "src": "711:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 180, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "711:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 183, + "indexed": true, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 187, + "src": "734:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 182, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "734:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 185, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 187, + "src": "759:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 184, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "759:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "710:60:1" + }, + "src": "696:75:1" + }, + { + "anonymous": false, + "documentation": null, + "id": 195, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 194, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "indexed": true, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "791:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 188, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "791:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 191, + "indexed": true, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "813:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 190, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 193, + "indexed": false, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 195, + "src": "833:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 192, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "833:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "790:54:1" + }, + "src": "776:69:1" + }, + { + "body": { + "id": 250, + "nodeType": "Block", + "src": "929:522:1", + "statements": [ + { + "assignments": [ + 205 + ], + "declarations": [ + { + "constant": false, + "id": 205, + "mutability": "mutable", + "name": "chainId", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 250, + "src": "939:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 204, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "939:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 206, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "939:12:1" + }, + { + "AST": { + "nodeType": "YulBlock", + "src": "970:44:1", + "statements": [ + { + "nodeType": "YulAssignment", + "src": "984:20:1", + "value": { + "arguments": [], + "functionName": { + "name": "chainid", + "nodeType": "YulIdentifier", + "src": "995:7:1" + }, + "nodeType": "YulFunctionCall", + "src": "995:9:1" + }, + "variableNames": [ + { + "name": "chainId", + "nodeType": "YulIdentifier", + "src": "984:7:1" + } + ] + } + ] + }, + "evmVersion": "istanbul", + "externalReferences": [ + { + "declaration": 205, + "isOffset": false, + "isSlot": false, + "src": "984:7:1", + "valueSize": 1 + } + ], + "id": 207, + "nodeType": "InlineAssembly", + "src": "961:53:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 234, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 208, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "1023:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429", + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:84:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + }, + "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f", + "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"" + } + ], + "id": 212, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1093:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 214, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1093:95:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 218, + "name": "name", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 154, + "src": "1222:4:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + ], + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1216:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 216, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1216:5:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1216:11:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 215, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1206:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1206:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "31", + "id": 224, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1262:3:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + }, + "value": "1" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6", + "typeString": "literal_string \"1\"" + } + ], + "id": 223, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1256:5:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes_storage_ptr_$", + "typeString": "type(bytes storage pointer)" + }, + "typeName": { + "id": 222, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1256:5:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1256:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 221, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1246:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1246:21:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 227, + "name": "chainId", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 205, + "src": "1285:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 230, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1318:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MockERC20_$552", + "typeString": "contract MockERC20" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_MockERC20_$552", + "typeString": "contract MockERC20" + } + ], + "id": 229, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 228, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1310:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1310:13:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 210, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "1065:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 211, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1065:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1065:272:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 209, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "1042:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1042:305:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "src": "1023:324:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 235, + "nodeType": "ExpressionStatement", + "src": "1023:324:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 236, + "name": "symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 156, + "src": "1357:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 237, + "name": "_symbol", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 197, + "src": "1366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string memory" + } + }, + "src": "1357:16:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string storage ref" + } + }, + "id": 239, + "nodeType": "ExpressionStatement", + "src": "1357:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 240, + "name": "decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 158, + "src": "1383:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 241, + "name": "_decimals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 201, + "src": "1394:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1383:20:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 243, + "nodeType": "ExpressionStatement", + "src": "1383:20:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 245, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1419:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1419:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 247, + "name": "_totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 199, + "src": "1431:12:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 244, + "name": "_mint", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 286, + "src": "1413:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 248, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1413:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 249, + "nodeType": "ExpressionStatement", + "src": "1413:31:1" + } + ] + }, + "documentation": null, + "id": 251, + "implemented": true, + "kind": "constructor", + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 202, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 197, + "mutability": "mutable", + "name": "_symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 251, + "src": "863:21:1", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_string_memory_ptr", + "typeString": "string" + }, + "typeName": { + "id": 196, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "863:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 199, + "mutability": "mutable", + "name": "_totalSupply", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 251, + "src": "886:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 198, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "886:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 201, + "mutability": "mutable", + "name": "_decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 251, + "src": "905:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 200, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "905:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "862:59:1" + }, + "returnParameters": { + "id": 203, + "nodeType": "ParameterList", + "parameters": [], + "src": "929:0:1" + }, + "scope": 552, + "src": "851:600:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 285, + "nodeType": "Block", + "src": "1505:149:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 258, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1515:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1545:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 259, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1529:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "1529:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1529:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1515:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "1515:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 265, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "1561:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 267, + "indexExpression": { + "argumentTypes": null, + "id": 266, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "1571:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1561:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 272, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1595:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 268, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "1577:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 270, + "indexExpression": { + "argumentTypes": null, + "id": 269, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "1587:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1577:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "1577:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1577:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1561:40:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 275, + "nodeType": "ExpressionStatement", + "src": "1561:40:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 279, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1633:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 278, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 277, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1625:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 280, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1625:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 281, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 253, + "src": "1637:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 282, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 255, + "src": "1641:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 276, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1616:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1616:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 284, + "nodeType": "EmitStatement", + "src": "1611:36:1" + } + ] + }, + "documentation": null, + "id": 286, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_mint", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 256, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 253, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "1472:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 252, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1472:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 255, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 286, + "src": "1484:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 254, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1484:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1471:24:1" + }, + "returnParameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [], + "src": "1505:0:1" + }, + "scope": 552, + "src": "1457:197:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 320, + "nodeType": "Block", + "src": "1710:155:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 293, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "1720:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 295, + "indexExpression": { + "argumentTypes": null, + "id": 294, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 288, + "src": "1730:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1720:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 300, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 290, + "src": "1758:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 296, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "1738:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 298, + "indexExpression": { + "argumentTypes": null, + "id": 297, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 288, + "src": "1748:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1738:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "1738:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 301, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1738:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1720:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 303, + "nodeType": "ExpressionStatement", + "src": "1720:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 309, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 304, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1774:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 307, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 290, + "src": "1804:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 305, + "name": "totalSupply", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "1788:11:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 306, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "1788:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 308, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1788:22:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1774:36:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 310, + "nodeType": "ExpressionStatement", + "src": "1774:36:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 312, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 288, + "src": "1834:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 315, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1848:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1840:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 313, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1840:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1840:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 317, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 290, + "src": "1852:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 311, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "1825:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 318, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1825:33:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 319, + "nodeType": "EmitStatement", + "src": "1820:38:1" + } + ] + }, + "documentation": null, + "id": 321, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_burn", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 291, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 288, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 321, + "src": "1675:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 287, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1675:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 290, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 321, + "src": "1689:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 289, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1689:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1674:26:1" + }, + "returnParameters": { + "id": 292, + "nodeType": "ParameterList", + "parameters": [], + "src": "1710:0:1" + }, + "scope": 552, + "src": "1660:205:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "internal" + }, + { + "body": { + "id": 344, + "nodeType": "Block", + "src": "1941:96:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 336, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 330, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "1951:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 333, + "indexExpression": { + "argumentTypes": null, + "id": 331, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 323, + "src": "1961:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1951:16:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 334, + "indexExpression": { + "argumentTypes": null, + "id": 332, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 325, + "src": "1968:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1951:25:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 335, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "1979:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1951:33:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 337, + "nodeType": "ExpressionStatement", + "src": "1951:33:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 339, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 323, + "src": "2008:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 340, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 325, + "src": "2015:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 341, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 327, + "src": "2024:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 338, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1999:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1999:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 343, + "nodeType": "EmitStatement", + "src": "1994:36:1" + } + ] + }, + "documentation": null, + "id": 345, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 328, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 323, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 345, + "src": "1889:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 322, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1889:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 325, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 345, + "src": "1904:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 324, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1904:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 327, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 345, + "src": "1921:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 326, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1921:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1888:44:1" + }, + "returnParameters": { + "id": 329, + "nodeType": "ParameterList", + "parameters": [], + "src": "1941:0:1" + }, + "scope": 552, + "src": "1871:166:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 382, + "nodeType": "Block", + "src": "2108:151:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 363, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 354, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "2118:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 356, + "indexExpression": { + "argumentTypes": null, + "id": 355, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "2128:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2118:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 361, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "2156:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 357, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "2136:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 359, + "indexExpression": { + "argumentTypes": null, + "id": 358, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "2146:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2136:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 360, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "2136:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2136:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2118:44:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 364, + "nodeType": "ExpressionStatement", + "src": "2118:44:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 365, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "2172:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 367, + "indexExpression": { + "argumentTypes": null, + "id": 366, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 349, + "src": "2182:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2172:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 372, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "2206:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 368, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 164, + "src": "2188:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 370, + "indexExpression": { + "argumentTypes": null, + "id": 369, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 349, + "src": "2198:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2188:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "add", + "nodeType": "MemberAccess", + "referencedDeclaration": 23, + "src": "2188:17:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2188:24:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2172:40:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 375, + "nodeType": "ExpressionStatement", + "src": "2172:40:1" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 377, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 347, + "src": "2236:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 378, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 349, + "src": "2242:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 379, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 351, + "src": "2246:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 376, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 195, + "src": "2227:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2227:25:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 381, + "nodeType": "EmitStatement", + "src": "2222:30:1" + } + ] + }, + "documentation": null, + "id": 383, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "_transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 352, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 347, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 383, + "src": "2062:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 346, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2062:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 349, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 383, + "src": "2076:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 348, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2076:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 351, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 383, + "src": "2088:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 350, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2088:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2061:38:1" + }, + "returnParameters": { + "id": 353, + "nodeType": "ParameterList", + "parameters": [], + "src": "2108:0:1" + }, + "scope": 552, + "src": "2043:216:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "private" + }, + { + "body": { + "id": 401, + "nodeType": "Block", + "src": "2335:74:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 393, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2354:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2354:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 395, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "2366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 396, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "2375:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 392, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "2345:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2345:36:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 398, + "nodeType": "ExpressionStatement", + "src": "2345:36:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2398:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 391, + "id": 400, + "nodeType": "Return", + "src": "2391:11:1" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 402, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 385, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 402, + "src": "2282:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 384, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2282:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 387, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 402, + "src": "2299:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 386, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2299:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2281:29:1" + }, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 390, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 402, + "src": "2329:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 389, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2329:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2328:6:1" + }, + "scope": 552, + "src": "2265:144:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 420, + "nodeType": "Block", + "src": "2481:70:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 412, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2501:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2501:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 414, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 404, + "src": "2513:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 415, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 406, + "src": "2517:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 411, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 383, + "src": "2491:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2491:32:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 417, + "nodeType": "ExpressionStatement", + "src": "2491:32:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 418, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2540:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 410, + "id": 419, + "nodeType": "Return", + "src": "2533:11:1" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 421, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 407, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 404, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 421, + "src": "2433:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 403, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2433:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 406, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 421, + "src": "2445:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 405, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2445:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2432:24:1" + }, + "returnParameters": { + "id": 410, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 409, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 421, + "src": "2475:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 408, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2475:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2474:6:1" + }, + "scope": 552, + "src": "2415:136:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 471, + "nodeType": "Block", + "src": "2641:211:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 443, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 432, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "2655:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 434, + "indexExpression": { + "argumentTypes": null, + "id": 433, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "2665:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2655:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 437, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 435, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2671:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 436, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2671:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2655:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2691:2:1", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2692:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 439, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2686:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 438, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2686:4:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 442, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2686:8:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2655:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 462, + "nodeType": "IfStatement", + "src": "2651:138:1", + "trueBody": { + "id": 461, + "nodeType": "Block", + "src": "2696:93:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 459, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 444, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "2710:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 448, + "indexExpression": { + "argumentTypes": null, + "id": 445, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "2720:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2710:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 449, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 446, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2726:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 447, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2726:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2710:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 457, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "2772:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 450, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 170, + "src": "2740:9:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 452, + "indexExpression": { + "argumentTypes": null, + "id": 451, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "2750:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:15:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 455, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 453, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2756:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 454, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2756:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:27:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sub", + "nodeType": "MemberAccess", + "referencedDeclaration": 45, + "src": "2740:31:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 458, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2740:38:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2710:68:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 460, + "nodeType": "ExpressionStatement", + "src": "2710:68:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 464, + "name": "from", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 423, + "src": "2808:4:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 465, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 425, + "src": "2814:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 466, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 427, + "src": "2818:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 463, + "name": "_transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 383, + "src": "2798:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 467, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2798:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 468, + "nodeType": "ExpressionStatement", + "src": "2798:26:1" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 469, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2841:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 431, + "id": 470, + "nodeType": "Return", + "src": "2834:11:1" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 472, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 423, + "mutability": "mutable", + "name": "from", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 472, + "src": "2579:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 422, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2579:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 425, + "mutability": "mutable", + "name": "to", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 472, + "src": "2593:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 424, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2593:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 427, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 472, + "src": "2605:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 426, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2605:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2578:38:1" + }, + "returnParameters": { + "id": 431, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 472, + "src": "2635:4:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 429, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2635:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2634:6:1" + }, + "scope": 552, + "src": "2557:295:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + }, + { + "body": { + "id": 550, + "nodeType": "Block", + "src": "2973:525:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 490, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "2991:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 491, + "name": "block", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -4, + "src": "3003:5:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_block", + "typeString": "block" + } + }, + "id": 492, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "timestamp", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3003:15:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2991:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "45585049524544", + "id": 494, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3020:9:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a", + "typeString": "literal_string \"EXPIRED\"" + }, + "value": "EXPIRED" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a", + "typeString": "literal_string \"EXPIRED\"" + } + ], + "id": 489, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2983:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 495, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2983:47:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 496, + "nodeType": "ExpressionStatement", + "src": "2983:47:1" + }, + { + "assignments": [ + 498 + ], + "declarations": [ + { + "constant": false, + "id": 498, + "mutability": "mutable", + "name": "digest", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 550, + "src": "3040:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 497, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3040:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 520, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "1901", + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3114:10:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + "value": "\u0019\u0001" + }, + { + "argumentTypes": null, + "id": 503, + "name": "DOMAIN_SEPARATOR", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 172, + "src": "3142:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 507, + "name": "PERMIT_TYPEHASH", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 175, + "src": "3197:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 508, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3214:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 509, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3221:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 510, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 478, + "src": "3230:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3237:15:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 511, + "name": "nonces", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 179, + "src": "3237:6:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 513, + "indexExpression": { + "argumentTypes": null, + "id": 512, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3244:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3237:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 515, + "name": "deadline", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 480, + "src": "3254:8:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 505, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3186:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encode", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3186:10:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3186:77:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 504, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3176:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3176:88:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541", + "typeString": "literal_string \"\u0019\u0001\"" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "expression": { + "argumentTypes": null, + "id": 500, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -1, + "src": "3080:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3080:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3080:198:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 499, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -8, + "src": "3057:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" + } + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3057:231:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3040:248:1" + }, + { + "assignments": [ + 522 + ], + "declarations": [ + { + "constant": false, + "id": 522, + "mutability": "mutable", + "name": "recoveredAddress", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 550, + "src": "3298:24:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 521, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3298:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 529, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 524, + "name": "digest", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "3335:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 525, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 482, + "src": "3343:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 526, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 484, + "src": "3346:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 527, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 486, + "src": "3349:1:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 523, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -6, + "src": "3325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3325:26:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3298:53:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 531, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "3369:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 534, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3397:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3389:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 532, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3389:7:1", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 535, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3389:10:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "3369:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 537, + "name": "recoveredAddress", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 522, + "src": "3403:16:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 538, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3423:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3403:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3369:59:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "494e56414c49445f5349474e4154555245", + "id": 541, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3430:19:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88", + "typeString": "literal_string \"INVALID_SIGNATURE\"" + }, + "value": "INVALID_SIGNATURE" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88", + "typeString": "literal_string \"INVALID_SIGNATURE\"" + } + ], + "id": 530, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "3361:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 542, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3361:89:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 543, + "nodeType": "ExpressionStatement", + "src": "3361:89:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 545, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 474, + "src": "3469:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 546, + "name": "spender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 476, + "src": "3476:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 547, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 478, + "src": "3485:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 544, + "name": "_approve", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "3460:8:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3460:31:1", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 549, + "nodeType": "ExpressionStatement", + "src": "3460:31:1" + } + ] + }, + "documentation": null, + "functionSelector": "d505accf", + "id": 551, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "permit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 487, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 474, + "mutability": "mutable", + "name": "owner", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2874:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 473, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2874:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 476, + "mutability": "mutable", + "name": "spender", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2889:15:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 475, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2889:7:1", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 478, + "mutability": "mutable", + "name": "value", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2906:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 477, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2906:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 480, + "mutability": "mutable", + "name": "deadline", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2918:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 479, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2918:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 482, + "mutability": "mutable", + "name": "v", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2933:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 481, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2933:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 484, + "mutability": "mutable", + "name": "r", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2942:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 483, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2942:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 486, + "mutability": "mutable", + "name": "s", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 551, + "src": "2953:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 485, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2953:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2873:90:1" + }, + "returnParameters": { + "id": 488, + "nodeType": "ParameterList", + "parameters": [], + "src": "2973:0:1" + }, + "scope": 552, + "src": "2858:640:1", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "external" + } + ], + "scope": 553, + "src": "95:3405:1" + } + ], + "src": "32:3469:1" + }, + "id": 1 + } + } + } +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/build-info/90d96dae6a1ddcdbb3ac104035e2e01f.json b/projects/Team-7-DeDrops/contract/artifacts/build-info/90d96dae6a1ddcdbb3ac104035e2e01f.json new file mode 100644 index 0000000..12f18f3 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/build-info/90d96dae6a1ddcdbb3ac104035e2e01f.json @@ -0,0 +1,3601 @@ +{ + "id": "90d96dae6a1ddcdbb3ac104035e2e01f", + "_format": "hh-sol-build-info-1", + "solcVersion": "0.6.12", + "solcLongVersion": "0.6.12+commit.27d51765", + "input": { + "language": "Solidity", + "sources": { + "contracts/test/WETH9.sol": { + "content": "// Copyright (C) 2015, 2016, 2017 Dapphub\n\n// This program is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n\n// This program is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n\n// You should have received a copy of the GNU General Public License\n// along with this program. If not, see .\n// SPDX-License-Identifier: MIT\npragma solidity =0.6.12;\n\ncontract WETH9 {\n string public name = \"Wrapped ETH\";\n string public symbol = \"WETH\";\n uint8 public decimals = 18;\n\n event Approval(address indexed src, address indexed guy, uint wad);\n event Transfer(address indexed src, address indexed dst, uint wad);\n event Deposit(address indexed dst, uint wad);\n event Withdrawal(address indexed src, uint wad);\n\n mapping (address => uint) public balanceOf;\n mapping (address => mapping (address => uint)) public allowance;\n\n // function() public payable {\n // deposit();\n // }\n function deposit() public payable {\n balanceOf[msg.sender] += msg.value;\n emit Deposit(msg.sender, msg.value);\n }\n function withdraw(uint wad) public {\n require(balanceOf[msg.sender] >= wad, \"\");\n balanceOf[msg.sender] -= wad;\n msg.sender.transfer(wad);\n emit Withdrawal(msg.sender, wad);\n }\n\n function totalSupply() public view returns (uint) {\n return address(this).balance;\n }\n\n function approve(address guy, uint wad) public returns (bool) {\n allowance[msg.sender][guy] = wad;\n emit Approval(msg.sender, guy, wad);\n return true;\n }\n\n function transfer(address dst, uint wad) public returns (bool) {\n return transferFrom(msg.sender, dst, wad);\n }\n\n function transferFrom(address src, address dst, uint wad)\n public\n returns (bool)\n {\n require(balanceOf[src] >= wad, \"\");\n\n if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) {\n require(allowance[src][msg.sender] >= wad, \"\");\n allowance[src][msg.sender] -= wad;\n }\n\n balanceOf[src] -= wad;\n balanceOf[dst] += wad;\n\n emit Transfer(src, dst, wad);\n\n return true;\n }\n}\n\n\n/*\n GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. \n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n Preamble\n\n The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works. By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users. We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors. You can apply it to\nyour programs, too.\n\n When we speak of free software, we are referring to freedom, not\nprice. Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights. Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received. You must make sure that they, too, receive\nor can get the source code. And you must show them these terms so they\nknow their rights.\n\n Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software. For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so. This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software. The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable. Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts. If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary. To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n The precise terms and conditions for copying, distribution and\nmodification follow.\n\n TERMS AND CONDITIONS\n\n 0. Definitions.\n\n \"This License\" refers to version 3 of the GNU General Public License.\n\n \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n \"The Program\" refers to any copyrightable work licensed under this\nLicense. Each licensee is addressed as \"you\". \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy. The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy. Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies. Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License. If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n 1. Source Code.\n\n The \"source code\" for a work means the preferred form of the work\nfor making modifications to it. \"Object code\" means any non-source\nform of a work.\n\n A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form. A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities. However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work. For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n The Corresponding Source for a work in source code form is that\nsame work.\n\n 2. Basic Permissions.\n\n All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met. This License explicitly affirms your unlimited\npermission to run the unmodified Program. The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work. This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force. You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright. Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n Conveying under any other circumstances is permitted solely under\nthe conditions stated below. Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n 3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n 4. Conveying Verbatim Copies.\n\n You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n 5. Conveying Modified Source Versions.\n\n You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n a) The work must carry prominent notices stating that you modified\n it, and giving a relevant date.\n\n b) The work must carry prominent notices stating that it is\n released under this License and any conditions added under section\n 7. This requirement modifies the requirement in section 4 to\n \"keep intact all notices\".\n\n c) You must license the entire work, as a whole, under this\n License to anyone who comes into possession of a copy. This\n License will therefore apply, along with any applicable section 7\n additional terms, to the whole of the work, and all its parts,\n regardless of how they are packaged. This License gives no\n permission to license the work in any other way, but it does not\n invalidate such permission if you have separately received it.\n\n d) If the work has interactive user interfaces, each must display\n Appropriate Legal Notices; however, if the Program has interactive\n interfaces that do not display Appropriate Legal Notices, your\n work need not make them do so.\n\n A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit. Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n 6. Conveying Non-Source Forms.\n\n You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n a) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by the\n Corresponding Source fixed on a durable physical medium\n customarily used for software interchange.\n\n b) Convey the object code in, or embodied in, a physical product\n (including a physical distribution medium), accompanied by a\n written offer, valid for at least three years and valid for as\n long as you offer spare parts or customer support for that product\n model, to give anyone who possesses the object code either (1) a\n copy of the Corresponding Source for all the software in the\n product that is covered by this License, on a durable physical\n medium customarily used for software interchange, for a price no\n more than your reasonable cost of physically performing this\n conveying of source, or (2) access to copy the\n Corresponding Source from a network server at no charge.\n\n c) Convey individual copies of the object code with a copy of the\n written offer to provide the Corresponding Source. This\n alternative is allowed only occasionally and noncommercially, and\n only if you received the object code with such an offer, in accord\n with subsection 6b.\n\n d) Convey the object code by offering access from a designated\n place (gratis or for a charge), and offer equivalent access to the\n Corresponding Source in the same way through the same place at no\n further charge. You need not require recipients to copy the\n Corresponding Source along with the object code. If the place to\n copy the object code is a network server, the Corresponding Source\n may be on a different server (operated by you or a third party)\n that supports equivalent copying facilities, provided you maintain\n clear directions next to the object code saying where to find the\n Corresponding Source. Regardless of what server hosts the\n Corresponding Source, you remain obligated to ensure that it is\n available for as long as needed to satisfy these requirements.\n\n e) Convey the object code using peer-to-peer transmission, provided\n you inform other peers where the object code and Corresponding\n Source of the work are being offered to the general public at no\n charge under subsection 6d.\n\n A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling. In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage. For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product. A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source. The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information. But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed. Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n 7. Additional Terms.\n\n \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law. If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit. (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.) You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n a) Disclaiming warranty or limiting liability differently from the\n terms of sections 15 and 16 of this License; or\n\n b) Requiring preservation of specified reasonable legal notices or\n author attributions in that material or in the Appropriate Legal\n Notices displayed by works containing it; or\n\n c) Prohibiting misrepresentation of the origin of that material, or\n requiring that modified versions of such material be marked in\n reasonable ways as different from the original version; or\n\n d) Limiting the use for publicity purposes of names of licensors or\n authors of the material; or\n\n e) Declining to grant rights under trademark law for use of some\n trade names, trademarks, or service marks; or\n\n f) Requiring indemnification of licensors and authors of that\n material by anyone who conveys the material (or modified versions of\n it) with contractual assumptions of liability to the recipient, for\n any liability that these contractual assumptions directly impose on\n those licensors and authors.\n\n All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10. If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term. If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n 8. Termination.\n\n You may not propagate or modify a covered work except as expressly\nprovided under this License. Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License. If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n 9. Acceptance Not Required for Having Copies.\n\n You are not required to accept this License in order to receive or\nrun a copy of the Program. Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance. However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work. These actions infringe copyright if you do\nnot accept this License. Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n 10. Automatic Licensing of Downstream Recipients.\n\n Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License. You are not responsible\nfor enforcing compliance by third parties with this License.\n\n An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations. If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License. For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n 11. Patents.\n\n A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based. The\nwork thus licensed is called the contributor's \"contributor version\".\n\n A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version. For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement). To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients. \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License. You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n 12. No Surrender of Others' Freedom.\n\n If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License. If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all. For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n 13. Use with the GNU Affero General Public License.\n\n Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work. The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n 14. Revised Versions of this License.\n\n The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time. Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n Each version is given a distinguishing version number. If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation. If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n Later license versions may give you additional or different\npermissions. However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n 15. Disclaimer of Warranty.\n\n THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n 16. Limitation of Liability.\n\n IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n 17. Interpretation of Sections 15 and 16.\n\n If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n END OF TERMS AND CONDITIONS\n\n How to Apply These Terms to Your New Programs\n\n If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n To do so, attach the following notices to the program. It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n \n Copyright (C) \n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see .\n\nAlso add information on how to contact you by electronic and paper mail.\n\n If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n Copyright (C) \n This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n This is free software, and you are welcome to redistribute it\n under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License. Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n.\n\n The GNU General Public License does not permit incorporating your program\ninto proprietary programs. If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library. If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License. But first, please read\n.\n\n*/" + } + }, + "settings": { + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers" + ], + "": [ + "ast" + ] + } + } + } + }, + "output": { + "contracts": { + "contracts/test/WETH9.sol": { + "WETH9": { + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "evm": { + "bytecode": { + "linkReferences": {}, + "object": "60c0604052600b60808190526a0aee4c2e0e0cac8408aa8960ab1b60a090815261002c9160009190610078565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005891600191610078565b506002805460ff1916601217905534801561007257600080fd5b5061010b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b957805160ff19168380011785556100e6565b828001600101855582156100e6579182015b828111156100e65782518255916020019190600101906100cb565b506100f29291506100f6565b5090565b5b808211156100f257600081556001016100f7565b61074f8061011a6000396000f3fe60806040526004361061009c5760003560e01c8063313ce56711610064578063313ce5671461020e57806370a082311461023957806395d89b411461026c578063a9059cbb14610281578063d0e30db0146102ba578063dd62ed3e146102c25761009c565b806306fdde03146100a1578063095ea7b31461012b57806318160ddd1461017857806323b872dd1461019f5780632e1a7d4d146101e2575b600080fd5b3480156100ad57600080fd5b506100b66102fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013757600080fd5b506101646004803603604081101561014e57600080fd5b506001600160a01b03813516906020013561038b565b604080519115158252519081900360200190f35b34801561018457600080fd5b5061018d6103f1565b60408051918252519081900360200190f35b3480156101ab57600080fd5b50610164600480360360608110156101c257600080fd5b506001600160a01b038135811691602081013590911690604001356103f5565b3480156101ee57600080fd5b5061020c6004803603602081101561020557600080fd5b503561056d565b005b34801561021a57600080fd5b50610223610624565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b5061018d6004803603602081101561025c57600080fd5b50356001600160a01b031661062d565b34801561027857600080fd5b506100b661063f565b34801561028d57600080fd5b50610164600480360360408110156102a457600080fd5b506001600160a01b038135169060200135610699565b61020c6106ad565b3480156102ce57600080fd5b5061018d600480360360408110156102e557600080fd5b506001600160a01b03813581169160200135166106fc565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561043c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038416331480159061047a57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b156104fc576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104d1576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105ea573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b60006106a63384846103f5565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220231913a8879316363f5ae32f11973222dd17a664693621229f5f9f370e563c4c64736f6c634300060c0033", + "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xB PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH11 0xAEE4C2E0E0CAC8408AA89 PUSH1 0xAB SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2C SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x78 JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x58 SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x78 JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x72 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10B JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xB9 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE6 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE6 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE6 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCB JUMP JUMPDEST POP PUSH2 0xF2 SWAP3 SWAP2 POP PUSH2 0xF6 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF2 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF7 JUMP JUMPDEST PUSH2 0x74F DUP1 PUSH2 0x11A PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C2 JUMPI PUSH2 0x9C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xA1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH2 0x3F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x56D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x223 PUSH2 0x624 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x62D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x63F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x6AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x383 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x358 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x383 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x366 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x47A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x0 NOT EQ ISZERO JUMPDEST ISZERO PUSH2 0x4FC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x5AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x5EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x383 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x358 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A6 CALLER DUP5 DUP5 PUSH2 0x3F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 NOT SGT 0xA8 DUP8 SWAP4 AND CALLDATASIZE EXTCODEHASH GAS 0xE3 0x2F GT SWAP8 ORIGIN 0x22 0xDD OR 0xA6 PUSH5 0x693621229F 0x5F SWAP16 CALLDATACOPY 0xE JUMP EXTCODECOPY 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "764:38:0:-:0;743:1826;764:38;;743:1826;764:38;;;-1:-1:-1;;;764:38:0;;;;;;-1:-1:-1;;764:38:0;;:::i;:::-;-1:-1:-1;808:31:0;;;;;;;;;;;;;-1:-1:-1;;;808:31:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;845:27:0;;;-1:-1:-1;;845:27:0;870:2;845:27;;;743:1826;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;743:1826:0;;;-1:-1:-1;743:1826:0;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;" + }, + "deployedBytecode": { + "immutableReferences": {}, + "linkReferences": {}, + "object": "60806040526004361061009c5760003560e01c8063313ce56711610064578063313ce5671461020e57806370a082311461023957806395d89b411461026c578063a9059cbb14610281578063d0e30db0146102ba578063dd62ed3e146102c25761009c565b806306fdde03146100a1578063095ea7b31461012b57806318160ddd1461017857806323b872dd1461019f5780632e1a7d4d146101e2575b600080fd5b3480156100ad57600080fd5b506100b66102fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013757600080fd5b506101646004803603604081101561014e57600080fd5b506001600160a01b03813516906020013561038b565b604080519115158252519081900360200190f35b34801561018457600080fd5b5061018d6103f1565b60408051918252519081900360200190f35b3480156101ab57600080fd5b50610164600480360360608110156101c257600080fd5b506001600160a01b038135811691602081013590911690604001356103f5565b3480156101ee57600080fd5b5061020c6004803603602081101561020557600080fd5b503561056d565b005b34801561021a57600080fd5b50610223610624565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b5061018d6004803603602081101561025c57600080fd5b50356001600160a01b031661062d565b34801561027857600080fd5b506100b661063f565b34801561028d57600080fd5b50610164600480360360408110156102a457600080fd5b506001600160a01b038135169060200135610699565b61020c6106ad565b3480156102ce57600080fd5b5061018d600480360360408110156102e557600080fd5b506001600160a01b03813581169160200135166106fc565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561043c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038416331480159061047a57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b156104fc576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104d1576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105ea573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b60006106a63384846103f5565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220231913a8879316363f5ae32f11973222dd17a664693621229f5f9f370e563c4c64736f6c634300060c0033", + "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x9C JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x20E JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x26C JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x2C2 JUMPI PUSH2 0x9C JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xA1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x12B JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x178 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x19F JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x1E2 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xAD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x2FD JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF0 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xD8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x11D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x137 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x14E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x38B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x184 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH2 0x3F1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3F5 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x20C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x205 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x56D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x21A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x223 PUSH2 0x624 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x245 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x25C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB AND PUSH2 0x62D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x278 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xB6 PUSH2 0x63F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x164 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST PUSH2 0x20C PUSH2 0x6AD JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x18D PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2E5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x6FC JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x383 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x358 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x383 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x366 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x43C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x47A JUMPI POP PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH1 0x0 NOT EQ ISZERO JUMPDEST ISZERO PUSH2 0x4FC JUMPI PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4D1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x5AB JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x5EA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH1 0x0 NOT ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x383 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x358 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x383 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x6A6 CALLER DUP5 DUP5 PUSH2 0x3F5 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x23 NOT SGT 0xA8 DUP8 SWAP4 AND CALLDATASIZE EXTCODEHASH GAS 0xE3 0x2F GT SWAP8 ORIGIN 0x22 0xDD OR 0xA6 PUSH5 0x693621229F 0x5F SWAP16 CALLDATACOPY 0xE JUMP EXTCODECOPY 0x4C PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ", + "sourceMap": "743:1826:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;764:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1789:177;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1789:177:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1688:95;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2099:468;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;2099:468:0;;;;;;;;;;;;;;;;;:::i;1475:207::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1475:207:0;;:::i;:::-;;845:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1131:65;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1131:65:0;-1:-1:-1;;;;;1131:65:0;;:::i;808:31::-;;;;;;;;;;;;;:::i;1972:121::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1972:121:0;;;;;;;;:::i;1340:130::-;;;:::i;1202:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;1202:65:0;;;;;;;;;;:::i;764:38::-;;;;;;;;;;;;;;;-1:-1:-1;;764:38:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1789:177::-;1871:10;1845:4;1861:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;1861:26:0;;;;;;;;;;;:32;;;1908:30;;;;;;;1845:4;;1861:26;;1871:10;;1908:30;;;;;;;;-1:-1:-1;1955:4:0;1789:177;;;;:::o;1688:95::-;1755:21;1688:95;:::o;2099:468::-;-1:-1:-1;;;;;2217:14:0;;2189:4;2217:14;;;:9;:14;;;;;;:21;-1:-1:-1;2217:21:0;2209:34;;;;;-1:-1:-1;;;2209:34:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2258:17:0;;2265:10;2258:17;;;;:59;;-1:-1:-1;;;;;;2279:14:0;;;;;;:9;:14;;;;;;;;2294:10;2279:26;;;;;;;;-1:-1:-1;;2279:38:0;;2258:59;2254:183;;;-1:-1:-1;;;;;2341:14:0;;;;;;:9;:14;;;;;;;;2356:10;2341:26;;;;;;;;:33;-1:-1:-1;2341:33:0;2333:46;;;;;-1:-1:-1;;;2333:46:0;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2393:14:0;;;;;;:9;:14;;;;;;;;2408:10;2393:26;;;;;;;:33;;;;;;;2254:183;-1:-1:-1;;;;;2447:14:0;;;;;;;:9;:14;;;;;;;;:21;;;;;;;2478:14;;;;;;;;;;:21;;;;;;2515:23;;;;;;;2478:14;;2515:23;;;;;;;;;;;-1:-1:-1;2556:4:0;2099:468;;;;;:::o;1475:207::-;1538:10;1528:21;;;;:9;:21;;;;;;:28;-1:-1:-1;1528:28:0;1520:41;;;;;-1:-1:-1;;;1520:41:0;;;;;;;;;;;;;;;;;;;;;;;1581:10;1571:21;;;;:9;:21;;;;;;:28;;;;;;;1609:24;;;;;;1596:3;;1609:24;;1571:21;1609:24;1596:3;1581:10;1609:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1648:27:0;;;;;;;;1659:10;;1648:27;;;;;;;;;;1475:207;:::o;845:27::-;;;;;;:::o;1131:65::-;;;;;;;;;;;;;:::o;808:31::-;;;;;;;;;;;;;;;-1:-1:-1;;808:31:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1972:121;2029:4;2052:34;2065:10;2077:3;2082;2052:12;:34::i;:::-;2045:41;1972:121;-1:-1:-1;;;1972:121:0:o;1340:130::-;1394:10;1384:21;;;;:9;:21;;;;;;;;;:34;;1409:9;1384:34;;;;;;1433:30;;;;;;;;;;;;;;;;;1340:130::o;1202:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o" + }, + "methodIdentifiers": { + "allowance(address,address)": "dd62ed3e", + "approve(address,uint256)": "095ea7b3", + "balanceOf(address)": "70a08231", + "decimals()": "313ce567", + "deposit()": "d0e30db0", + "name()": "06fdde03", + "symbol()": "95d89b41", + "totalSupply()": "18160ddd", + "transfer(address,uint256)": "a9059cbb", + "transferFrom(address,address,uint256)": "23b872dd", + "withdraw(uint256)": "2e1a7d4d" + } + } + } + } + }, + "sources": { + "contracts/test/WETH9.sol": { + "ast": { + "absolutePath": "contracts/test/WETH9.sol", + "exportedSymbols": { + "WETH9": [ + 243 + ] + }, + "id": 244, + "license": "MIT", + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "=", + "0.6", + ".12" + ], + "nodeType": "PragmaDirective", + "src": "717:24:0" + }, + { + "abstract": false, + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 243, + "linearizedBaseContracts": [ + 243 + ], + "name": "WETH9", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "functionSelector": "06fdde03", + "id": 4, + "mutability": "mutable", + "name": "name", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "764:38:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 2, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "764:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "5772617070656420455448", + "id": 3, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "789:13:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_874c41dabf247f58cf7402101699de56f30fb80977de4a84bad0706e4619ebd7", + "typeString": "literal_string \"Wrapped ETH\"" + }, + "value": "Wrapped ETH" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "95d89b41", + "id": 7, + "mutability": "mutable", + "name": "symbol", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "808:31:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_storage", + "typeString": "string" + }, + "typeName": { + "id": 5, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "808:6:0", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57455448", + "id": 6, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "833:6:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8", + "typeString": "literal_string \"WETH\"" + }, + "value": "WETH" + }, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "313ce567", + "id": 10, + "mutability": "mutable", + "name": "decimals", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "845:27:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 8, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "845:5:0", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3138", + "id": 9, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "870:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_18_by_1", + "typeString": "int_const 18" + }, + "value": "18" + }, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 18, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 17, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 12, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 18, + "src": "895:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 11, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "895:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 14, + "indexed": true, + "mutability": "mutable", + "name": "guy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 18, + "src": "916:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 13, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "916:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 16, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 18, + "src": "937:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 15, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "937:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "894:52:0" + }, + "src": "879:68:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 26, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 25, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 20, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 26, + "src": "968:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 19, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 22, + "indexed": true, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 26, + "src": "989:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 21, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "989:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 24, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 26, + "src": "1010:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 23, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1010:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "967:52:0" + }, + "src": "952:68:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 32, + "name": "Deposit", + "nodeType": "EventDefinition", + "parameters": { + "id": 31, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 28, + "indexed": true, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 32, + "src": "1040:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 27, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1040:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 30, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 32, + "src": "1061:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 29, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1061:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1039:31:0" + }, + "src": "1025:46:0" + }, + { + "anonymous": false, + "documentation": null, + "id": 38, + "name": "Withdrawal", + "nodeType": "EventDefinition", + "parameters": { + "id": 37, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 34, + "indexed": true, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 38, + "src": "1094:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 33, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1094:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 36, + "indexed": false, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 38, + "src": "1115:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 35, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1115:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1093:31:0" + }, + "src": "1076:49:0" + }, + { + "constant": false, + "functionSelector": "70a08231", + "id": 42, + "mutability": "mutable", + "name": "balanceOf", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "1131:65:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 41, + "keyType": { + "id": 39, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1140:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1131:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 40, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1151:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "functionSelector": "dd62ed3e", + "id": 48, + "mutability": "mutable", + "name": "allowance", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 243, + "src": "1202:65:0", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "typeName": { + "id": 47, + "keyType": { + "id": 43, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1211:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1202:46:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + }, + "valueType": { + "id": 46, + "keyType": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1231:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "1222:25:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 45, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1242:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 66, + "nodeType": "Block", + "src": "1374:96:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 57, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 51, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "1384:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 54, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 52, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1394:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 53, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1394:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1384:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 55, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1409:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 56, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1409:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1384:34:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 58, + "nodeType": "ExpressionStatement", + "src": "1384:34:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 60, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1441:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 61, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1441:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 62, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1453:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 63, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1453:9:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 59, + "name": "Deposit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 32, + "src": "1433:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 64, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1433:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 65, + "nodeType": "EmitStatement", + "src": "1428:35:0" + } + ] + }, + "documentation": null, + "functionSelector": "d0e30db0", + "id": 67, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "deposit", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 49, + "nodeType": "ParameterList", + "parameters": [], + "src": "1356:2:0" + }, + "returnParameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "1374:0:0" + }, + "scope": 243, + "src": "1340:130:0", + "stateMutability": "payable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 103, + "nodeType": "Block", + "src": "1510:172:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 78, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 73, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "1528:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 76, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 74, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1538:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 75, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1538:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1528:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 77, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1553:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1528:28:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1558:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 72, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "1520:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 80, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1520:41:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 81, + "nodeType": "ExpressionStatement", + "src": "1520:41:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 87, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 82, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "1571:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 85, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 83, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1581:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 84, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1581:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1571:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 86, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1596:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1571:28:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 88, + "nodeType": "ExpressionStatement", + "src": "1571:28:0" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 94, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1629:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 89, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1609:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 92, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1609:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "id": 93, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1609:19:0", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1609:24:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1609:24:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 98, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1659:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 99, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1659:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 100, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 69, + "src": "1671:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 97, + "name": "Withdrawal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 38, + "src": "1648:10:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,uint256)" + } + }, + "id": 101, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1648:27:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 102, + "nodeType": "EmitStatement", + "src": "1643:32:0" + } + ] + }, + "documentation": null, + "functionSelector": "2e1a7d4d", + "id": 104, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "withdraw", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 70, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 69, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 104, + "src": "1493:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 68, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1493:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1492:10:0" + }, + "returnParameters": { + "id": 71, + "nodeType": "ParameterList", + "parameters": [], + "src": "1510:0:0" + }, + "scope": 243, + "src": "1475:207:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 115, + "nodeType": "Block", + "src": "1738:45:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 111, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -28, + "src": "1763:4:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WETH9_$243", + "typeString": "contract WETH9" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_WETH9_$243", + "typeString": "contract WETH9" + } + ], + "id": 110, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1755:7:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": { + "id": 109, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1755:7:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1755:13:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "balance", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1755:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 108, + "id": 114, + "nodeType": "Return", + "src": "1748:28:0" + } + ] + }, + "documentation": null, + "functionSelector": "18160ddd", + "id": 116, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "totalSupply", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 105, + "nodeType": "ParameterList", + "parameters": [], + "src": "1708:2:0" + }, + "returnParameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 107, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 116, + "src": "1732:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 106, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1732:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1731:6:0" + }, + "scope": 243, + "src": "1688:95:0", + "stateMutability": "view", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 143, + "nodeType": "Block", + "src": "1851:115:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 125, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "1861:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 129, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 126, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1871:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1871:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1861:21:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 130, + "indexExpression": { + "argumentTypes": null, + "id": 128, + "name": "guy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "1883:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1861:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 131, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1890:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1861:32:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "1861:32:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 135, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "1917:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1917:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 137, + "name": "guy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 118, + "src": "1929:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 138, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 120, + "src": "1934:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 134, + "name": "Approval", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 18, + "src": "1908:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1908:30:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 140, + "nodeType": "EmitStatement", + "src": "1903:35:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1955:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 124, + "id": 142, + "nodeType": "Return", + "src": "1948:11:0" + } + ] + }, + "documentation": null, + "functionSelector": "095ea7b3", + "id": 144, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 121, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 118, + "mutability": "mutable", + "name": "guy", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "1806:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1806:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 120, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "1819:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 119, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "1819:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1805:23:0" + }, + "returnParameters": { + "id": 124, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 123, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 144, + "src": "1845:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 122, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1845:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1844:6:0" + }, + "scope": 243, + "src": "1789:177:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 160, + "nodeType": "Block", + "src": "2035:58:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 154, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2065:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2065:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + { + "argumentTypes": null, + "id": 156, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 146, + "src": "2077:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 157, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 148, + "src": "2082:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 153, + "name": "transferFrom", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 242, + "src": "2052:12:0", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,address,uint256) returns (bool)" + } + }, + "id": 158, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2052:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 152, + "id": 159, + "nodeType": "Return", + "src": "2045:41:0" + } + ] + }, + "documentation": null, + "functionSelector": "a9059cbb", + "id": 161, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 149, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 146, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 161, + "src": "1990:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 145, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1990:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 148, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 161, + "src": "2003:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 147, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2003:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1989:23:0" + }, + "returnParameters": { + "id": 152, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 151, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 161, + "src": "2029:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 150, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2029:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2028:6:0" + }, + "scope": 243, + "src": "1972:121:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + }, + { + "body": { + "id": 241, + "nodeType": "Block", + "src": "2199:368:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 173, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "2217:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 175, + "indexExpression": { + "argumentTypes": null, + "id": 174, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2227:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2217:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 176, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2235:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2217:21:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 178, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2240:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 172, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2209:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 179, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2209:34:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 180, + "nodeType": "ExpressionStatement", + "src": "2209:34:0" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 181, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2258:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 182, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2265:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2265:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "src": "2258:17:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 196, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 185, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "2279:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 187, + "indexExpression": { + "argumentTypes": null, + "id": 186, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2289:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2279:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 190, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 188, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2294:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2294:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2279:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 194, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "-", + "prefix": true, + "src": "2314:2:0", + "subExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2315:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "typeDescriptions": { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_minus_1_by_1", + "typeString": "int_const -1" + } + ], + "id": 192, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2309:4:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_uint256_$", + "typeString": "type(uint256)" + }, + "typeName": { + "id": 191, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2309:4:0", + "typeDescriptions": { + "typeIdentifier": null, + "typeString": null + } + } + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2309:8:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2279:38:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2258:59:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 220, + "nodeType": "IfStatement", + "src": "2254:183:0", + "trueBody": { + "id": 219, + "nodeType": "Block", + "src": "2319:118:0", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 199, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "2341:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 201, + "indexExpression": { + "argumentTypes": null, + "id": 200, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2351:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2341:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 204, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 202, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2356:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2356:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2341:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 205, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2371:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2341:33:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 207, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2376:2:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + } + ], + "id": 198, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + -18, + -18 + ], + "referencedDeclaration": -18, + "src": "2333:7:0", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" + } + }, + "id": 208, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2333:46:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 209, + "nodeType": "ExpressionStatement", + "src": "2333:46:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 210, + "name": "allowance", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "2393:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(address => mapping(address => uint256))" + } + }, + "id": 214, + "indexExpression": { + "argumentTypes": null, + "id": 211, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2403:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2393:14:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 215, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 212, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": -15, + "src": "2408:3:0", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2408:10:0", + "typeDescriptions": { + "typeIdentifier": "t_address_payable", + "typeString": "address payable" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2393:26:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 216, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2423:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2393:33:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 218, + "nodeType": "ExpressionStatement", + "src": "2393:33:0" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 221, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "2447:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 223, + "indexExpression": { + "argumentTypes": null, + "id": 222, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2457:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2447:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "-=", + "rightHandSide": { + "argumentTypes": null, + "id": 224, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2465:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2447:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 226, + "nodeType": "ExpressionStatement", + "src": "2447:21:0" + }, + { + "expression": { + "argumentTypes": null, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 227, + "name": "balanceOf", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "2478:9:0", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "id": 229, + "indexExpression": { + "argumentTypes": null, + "id": 228, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2488:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2478:14:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 230, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2496:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2478:21:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 232, + "nodeType": "ExpressionStatement", + "src": "2478:21:0" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 234, + "name": "src", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 163, + "src": "2524:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 235, + "name": "dst", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 165, + "src": "2529:3:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 236, + "name": "wad", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2534:3:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 233, + "name": "Transfer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 26, + "src": "2515:8:0", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", + "typeString": "function (address,address,uint256)" + } + }, + "id": 237, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2515:23:0", + "tryCall": false, + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 238, + "nodeType": "EmitStatement", + "src": "2510:28:0" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2556:4:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 171, + "id": 240, + "nodeType": "Return", + "src": "2549:11:0" + } + ] + }, + "documentation": null, + "functionSelector": "23b872dd", + "id": 242, + "implemented": true, + "kind": "function", + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "overrides": null, + "parameters": { + "id": 168, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 163, + "mutability": "mutable", + "name": "src", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 242, + "src": "2121:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 162, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2121:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 165, + "mutability": "mutable", + "name": "dst", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 242, + "src": "2134:11:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 164, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2134:7:0", + "stateMutability": "nonpayable", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 167, + "mutability": "mutable", + "name": "wad", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 242, + "src": "2147:8:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "2147:4:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2120:36:0" + }, + "returnParameters": { + "id": 171, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 170, + "mutability": "mutable", + "name": "", + "nodeType": "VariableDeclaration", + "overrides": null, + "scope": 242, + "src": "2189:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 169, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2189:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2188:6:0" + }, + "scope": 243, + "src": "2099:468:0", + "stateMutability": "nonpayable", + "virtual": false, + "visibility": "public" + } + ], + "scope": 244, + "src": "743:1826:0" + } + ], + "src": "717:37008:0" + }, + "id": 0 + } + } + } +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/.DS_Store b/projects/Team-7-DeDrops/contract/artifacts/contracts/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e4ffda3384ac7a66fcdc7ba295e7d79998cc8974 GIT binary patch literal 6148 zcmeHKyH3ME5S)b+k&sYI%KHK&{=kY%N*ee81fjEJM3mkY-^Hh8_R&~|Dx!&IrM;<&-fJ8EmF_t|bT{sU!X?@< kG1@T?-j44gDf61|dEXUIi9u&P=tTVtxGpj&@ZSoY0AmCeJ^%m! literal 0 HcmV?d00001 diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.dbg.json new file mode 100644 index 0000000..298a19d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.json new file mode 100644 index 0000000..31da216 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank1155.sol/Bank1155.json @@ -0,0 +1,476 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Bank1155", + "sourceName": "contracts/Bank1155.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": false, + "internalType": "address", + "name": "to", + "type": "address" + } + ], + "name": "Password", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "CLAIM_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PASSWORD_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155BatchReceived", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "onERC1155Received", + "outputs": [ + { + "internalType": "bytes4", + "name": "", + "type": "bytes4" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "psw", + "type": "string" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "password", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "uint256", + "name": "", + "type": "uint256" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokenUserBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506100216301ffc9a760e01b610155565b610031630271189760e51b610155565b604080518082018252600881526742616e6b3131353560c01b602091820152815180830183526001808252603160f81b9183019190915282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f47255516b75e0b6b5913e302fe3b8ffecc7740facbb54a27d4a0a2dce11d4d4c818501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528451808303909101815260c09091019093528251929091019190912090557f242444289e23ce6db820d71eb5a872b74ab417877a6bc4b88ff9c0c982f42aa86002557fe1a52c71772aeec2cad9cac0dbd56513ea655223347c5201ca618b6d314300ec6003556101d9565b6001600160e01b031980821614156101b4576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6111f0806101e86000396000f3fe608060405234801561001057600080fd5b50600436106100b45760003560e01c80636b0509b1116100715780636b0509b1146102b257806390d25074146102ba5780639e317f12146102f4578063bc197c8114610311578063c2d7ccdb14610455578063f23a6e611461045d576100b4565b806301ffc9a7146100b95780631d570d04146100f45780633644e515146101505780633a84d0511461016a5780634aa57216146102425780634b2084e314610278575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b0319166104f0565b604080519115158252519081900360200190f35b61014e600480360361010081101561010b57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060ff60a0820135169060c08101359060e0013561050f565b005b610158610893565b60408051918252519081900360200190f35b61014e600480360361010081101561018157600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156101ba57600080fd5b8201836020820111156101cc57600080fd5b803590602001918460018302840111600160201b831117156101ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505060ff602083013516916040810135915060600135610899565b6101586004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359160409091013516610c6f565b61014e6004803603608081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610c92565b610158610e0b565b61014e600480360360808110156102d057600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610e11565b6100e06004803603602081101561030a57600080fd5b5035610f00565b610438600480360360a081101561032757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561035a57600080fd5b82018360208201111561036c57600080fd5b803590602001918460208302840111600160201b8311171561038d57600080fd5b919390929091602081019035600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111600160201b831117156103dd57600080fd5b919390929091602081019035600160201b8111156103fa57600080fd5b82018360208201111561040c57600080fd5b803590602001918460018302840111600160201b8311171561042d57600080fd5b509092509050610f15565b604080516001600160e01b03199092168252519081900360200190f35b610158611030565b610438600480360360a081101561047357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460018302840111600160201b831117156104e557600080fd5b509092509050611036565b6001600160e01b03191660009081526020819052604090205460ff1690565b4284101561054e5760405162461bcd60e51b81526004018080602001828103825260218152602001806111316021913960400191505060405180910390fd5b600154600254604080516020808201939093526001600160a01b03808d1682840152606082018c9052808b166080830152891660a082015260c08082018990528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220600081815260049092529190205460ff161561063f576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b313135353a3a636c61696d3a20657870697265642064696765737400604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561069b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106d15750876001600160a01b0316816001600160a01b0316145b61070c5760405162461bcd60e51b81526004018080602001828103825260228152602001806111996022913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610788576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e845282528083208d8616845290915280822080546000190190558051637921219560e11b8152306004820152938b166024850152604484018d90526001606485015260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50505050876001600160a01b0316898b6001600160a01b03167f47e33510b7d5f9240a1e4ceef4d03aeb1042bc91766bc62320cbda8f318e7c628a60405180826001600160a01b0316815260200191505060405180910390a450505050505050505050565b60015481565b428410156108d85760405162461bcd60e51b815260040180806020018281038252602481526020018061110d6024913960400191505060405180910390fd5b60006001546003548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001858152602001846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561095557818101518382015260200161093d565b50505050905090810190601f1680156109825780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600490925299902054989950505060ff909616159550610a2c9450505050505760405162461bcd60e51b81526004018080602001828103825260228152602001806111526022913960400191505060405180910390fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610abe5750876001600160a01b0316816001600160a01b0316145b610af95760405162461bcd60e51b81526004018080602001828103825260258152602001806111746025913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610b75576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e84528252808320948d16835293905282812080546000190190558251637921219560e11b8152306004820152336024820152604481018d90526001606482015260a0608482015260a481018290529251919263f242432a9260e4808301939282900301818387803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50506040805133815290516001600160a01b03808d1694508d93508e16917f1be3f8b8171458dca0bd407525862f7f9eb66cda4eedc1e54610049e29219066919081900360200190a450505050505050505050565b600560209081526000938452604080852082529284528284209052825290205481565b6001600160a01b03841660009081526005602090815260408083208684528252808320338452909152902054811115610d12576040805162461bcd60e51b815260206004820152601960248201527f42616e6b313135353a3a77697468647261773a206f68206e6f00000000000000604482015290519081900360640190fd5b6001600160a01b0384811660008181526005602090815260408083208884528252808320338452909152808220805486900390558051637921219560e11b81523060048201529386166024850152604484018790526064840185905260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b158015610da157600080fd5b505af1158015610db5573d6000803e3d6000fd5b50505050816001600160a01b031683856001600160a01b03167f457f950b75085c30ff780acd57bde642ff1316cc4aad9f286af2c1ffc4163a78846040518082815260200191505060405180910390a450505050565b60025481565b60408051637921219560e11b8152336004820152306024820152604481018590526064810183905260a06084820152600060a4820181905291516001600160a01b0387169263f242432a9260e4808201939182900301818387803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600560209081526040808320888452825280832094871680845294825291829020805486019055815185815291518793927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a450505050565b60046020526000908152604090205460ff1681565b6000808215610f6257610f5d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b610f64565b885b905060005b87811015611019576000898983818110610f7f57fe5b9050602002013590506000888884818110610f9657fe5b33600081815260056020908152604080832089845282528083206001600160a01b038c16808552908352928190208054958302979097013594850190965585518481529551939650909487945091927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b9281900390910190a45050600101610f69565b5063bc197c8160e01b9a9950505050505050505050565b60035481565b60008082156110835761107e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b611085565b865b3360008181526005602090815260408083208b845282528083206001600160a01b0386168085529083529281902080548b01905580518a8152905194955091938a93927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a45063f23a6e6160e01b979650505050505050565b601401519056fe42616e6b313135353a3a70617373776f72643a206578706972656420646561646c696e6542616e6b313135353a3a636c61696d3a206578706972656420646561646c696e6542616e6b313135353a3a70617373776f72643a20657870697265642064696765737442616e6b313135353a3a70617373776f72643a20696e76616c6964207369676e617475726542616e6b313135353a3a636c61696d3a20696e76616c6964207369676e6174757265a2646970667358221220d8bf1c9e0edb7f5a8e70f071a42bfad92360d055fa703e942aa7aadc5009ebff64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100b45760003560e01c80636b0509b1116100715780636b0509b1146102b257806390d25074146102ba5780639e317f12146102f4578063bc197c8114610311578063c2d7ccdb14610455578063f23a6e611461045d576100b4565b806301ffc9a7146100b95780631d570d04146100f45780633644e515146101505780633a84d0511461016a5780634aa57216146102425780634b2084e314610278575b600080fd5b6100e0600480360360208110156100cf57600080fd5b50356001600160e01b0319166104f0565b604080519115158252519081900360200190f35b61014e600480360361010081101561010b57600080fd5b506001600160a01b038135811691602081013591604082013581169160608101359091169060808101359060ff60a0820135169060c08101359060e0013561050f565b005b610158610893565b60408051918252519081900360200190f35b61014e600480360361010081101561018157600080fd5b6001600160a01b038235811692602081013592604082013590921691810190608081016060820135600160201b8111156101ba57600080fd5b8201836020820111156101cc57600080fd5b803590602001918460018302840111600160201b831117156101ed57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955050823593505060ff602083013516916040810135915060600135610899565b6101586004803603606081101561025857600080fd5b506001600160a01b03813581169160208101359160409091013516610c6f565b61014e6004803603608081101561028e57600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610c92565b610158610e0b565b61014e600480360360808110156102d057600080fd5b506001600160a01b0381358116916020810135916040820135169060600135610e11565b6100e06004803603602081101561030a57600080fd5b5035610f00565b610438600480360360a081101561032757600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561035a57600080fd5b82018360208201111561036c57600080fd5b803590602001918460208302840111600160201b8311171561038d57600080fd5b919390929091602081019035600160201b8111156103aa57600080fd5b8201836020820111156103bc57600080fd5b803590602001918460208302840111600160201b831117156103dd57600080fd5b919390929091602081019035600160201b8111156103fa57600080fd5b82018360208201111561040c57600080fd5b803590602001918460018302840111600160201b8311171561042d57600080fd5b509092509050610f15565b604080516001600160e01b03199092168252519081900360200190f35b610158611030565b610438600480360360a081101561047357600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156104b257600080fd5b8201836020820111156104c457600080fd5b803590602001918460018302840111600160201b831117156104e557600080fd5b509092509050611036565b6001600160e01b03191660009081526020819052604090205460ff1690565b4284101561054e5760405162461bcd60e51b81526004018080602001828103825260218152602001806111316021913960400191505060405180910390fd5b600154600254604080516020808201939093526001600160a01b03808d1682840152606082018c9052808b166080830152891660a082015260c08082018990528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220600081815260049092529190205460ff161561063f576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b313135353a3a636c61696d3a20657870697265642064696765737400604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa15801561069b573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106d15750876001600160a01b0316816001600160a01b0316145b61070c5760405162461bcd60e51b81526004018080602001828103825260228152602001806111996022913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610788576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e845282528083208d8616845290915280822080546000190190558051637921219560e11b8152306004820152938b166024850152604484018d90526001606485015260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b15801561081a57600080fd5b505af115801561082e573d6000803e3d6000fd5b50505050876001600160a01b0316898b6001600160a01b03167f47e33510b7d5f9240a1e4ceef4d03aeb1042bc91766bc62320cbda8f318e7c628a60405180826001600160a01b0316815260200191505060405180910390a450505050505050505050565b60015481565b428410156108d85760405162461bcd60e51b815260040180806020018281038252602481526020018061110d6024913960400191505060405180910390fd5b60006001546003548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001858152602001846001600160a01b0316815260200180602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561095557818101518382015260200161093d565b50505050905090810190601f1680156109825780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600490925299902054989950505060ff909616159550610a2c9450505050505760405162461bcd60e51b81526004018080602001828103825260228152602001806111526022913960400191505060405180910390fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610a88573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610abe5750876001600160a01b0316816001600160a01b0316145b610af95760405162461bcd60e51b81526004018080602001828103825260258152602001806111746025913960400191505060405180910390fd5b6001600160a01b03808b1660009081526005602090815260408083208d84528252808320938c168352929052205460011115610b75576040805162461bcd60e51b815260206004820152601660248201527542616e6b313135353a3a636c61696d3a206f68206e6f60501b604482015290519081900360640190fd5b6001600160a01b038a811660008181526005602090815260408083208e84528252808320948d16835293905282812080546000190190558251637921219560e11b8152306004820152336024820152604481018d90526001606482015260a0608482015260a481018290529251919263f242432a9260e4808301939282900301818387803b158015610c0657600080fd5b505af1158015610c1a573d6000803e3d6000fd5b50506040805133815290516001600160a01b03808d1694508d93508e16917f1be3f8b8171458dca0bd407525862f7f9eb66cda4eedc1e54610049e29219066919081900360200190a450505050505050505050565b600560209081526000938452604080852082529284528284209052825290205481565b6001600160a01b03841660009081526005602090815260408083208684528252808320338452909152902054811115610d12576040805162461bcd60e51b815260206004820152601960248201527f42616e6b313135353a3a77697468647261773a206f68206e6f00000000000000604482015290519081900360640190fd5b6001600160a01b0384811660008181526005602090815260408083208884528252808320338452909152808220805486900390558051637921219560e11b81523060048201529386166024850152604484018790526064840185905260a0608485015260a4840182905251919263f242432a9260e4808301939282900301818387803b158015610da157600080fd5b505af1158015610db5573d6000803e3d6000fd5b50505050816001600160a01b031683856001600160a01b03167f457f950b75085c30ff780acd57bde642ff1316cc4aad9f286af2c1ffc4163a78846040518082815260200191505060405180910390a450505050565b60025481565b60408051637921219560e11b8152336004820152306024820152604481018590526064810183905260a06084820152600060a4820181905291516001600160a01b0387169263f242432a9260e4808201939182900301818387803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506001600160a01b038481166000818152600560209081526040808320888452825280832094871680845294825291829020805486019055815185815291518793927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a450505050565b60046020526000908152604090205460ff1681565b6000808215610f6257610f5d84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b610f64565b885b905060005b87811015611019576000898983818110610f7f57fe5b9050602002013590506000888884818110610f9657fe5b33600081815260056020908152604080832089845282528083206001600160a01b038c16808552908352928190208054958302979097013594850190965585518481529551939650909487945091927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b9281900390910190a45050600101610f69565b5063bc197c8160e01b9a9950505050505050505050565b60035481565b60008082156110835761107e84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061110592505050565b611085565b865b3360008181526005602090815260408083208b845282528083206001600160a01b0386168085529083529281902080548b01905580518a8152905194955091938a93927fd2f8022f659fd9c8c558f30c00fd5ee7038f7cb56da45095c3e0e7d48b3e0c4b92908290030190a45063f23a6e6160e01b979650505050505050565b601401519056fe42616e6b313135353a3a70617373776f72643a206578706972656420646561646c696e6542616e6b313135353a3a636c61696d3a206578706972656420646561646c696e6542616e6b313135353a3a70617373776f72643a20657870697265642064696765737442616e6b313135353a3a70617373776f72643a20696e76616c6964207369676e617475726542616e6b313135353a3a636c61696d3a20696e76616c6964207369676e6174757265a2646970667358221220d8bf1c9e0edb7f5a8e70f071a42bfad92360d055fa703e942aa7aadc5009ebff64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.dbg.json new file mode 100644 index 0000000..298a19d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.json new file mode 100644 index 0000000..aa2cbf6 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/Bank20.sol/Bank20.json @@ -0,0 +1,352 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "Bank20", + "sourceName": "contracts/Bank20.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Claim", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Password", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Withdraw", + "type": "event" + }, + { + "inputs": [], + "name": "CLAIM_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PASSWORD_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "claim", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "string", + "name": "psw", + "type": "string" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "password", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "tokenUserBalance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040805180820182526006815265042616e6b32360d41b602091820152815180830183526001808252603160f81b9183019190915282517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527fc33b8f30d6a402858e57eb4b188ffa157501657e98bce16bd78b9b0a91f4e32a818501527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528451808303909101815260c0909101909352825192909101919091206000557fa05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec199490557f3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b600255610d628061013d6000396000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c80639e317f12116100665780639e317f12146101cc578063c2d7ccdb146101fd578063d9c8a0d314610205578063d9caed1214610233578063fe12e1671461026957610093565b80633644e515146100985780636b0509b1146100b25780638340f549146100ba5780638be27cb6146100f2575b600080fd5b6100a06102c1565b60408051918252519081900360200190f35b6100a06102c7565b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102cd565b005b6100f0600480360361010081101561010957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060ff60408201351690606081013590608001356103b3565b6101e9600480360360208110156101e257600080fd5b50356107ae565b604080519115158252519081900360200190f35b6100a06107c3565b6100a06004803603604081101561021b57600080fd5b506001600160a01b03813581169160200135166107c9565b6100f06004803603606081101561024957600080fd5b506001600160a01b038135811691602081013590911690604001356107e6565b6100f0600480360361010081101561028057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610942565b60005481565b60015481565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b50506001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805486019055815185815291517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629281900390910190a3505050565b428410156103f25760405162461bcd60e51b8152600401808060200182810382526022815260200180610ce86022913960400191505060405180910390fd5b600080546002548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600390925299902054989950505060ff90961615955061055b945050505050576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a70617373776f72643a206578706972656420646967657374604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156105b7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105ed5750886001600160a01b0316816001600160a01b0316145b6106285760405162461bcd60e51b8152600401808060200182810382526023815260200180610d0a6023913960400191505060405180910390fd5b6001600160a01b03808b166000908152600460209081526040808320938d16835292905220548711156106a2576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a70617373776f72643a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038a81166000818152600460208181526040808420958f16845294815284832080548d90039055845163a9059cbb60e01b81523392810192909252602482018c90529351929363a9059cbb9360448084019492939192918390030190829087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5050600082815260036020908152604091829020805460ff191660011790558151898152915133926001600160a01b038d811693908f16927fb6a4de4f10443720d160a890639ebfc73808cda95283421dcc762d9d40d0dacc9281900390910190a450505050505050505050565b60036020526000908152604090205460ff1681565b60025481565b600460209081526000928352604080842090915290825290205481565b6001600160a01b038316600090815260046020908152604080832033845290915290205481111561085e576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a77697468647261773a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038381166000818152600460208181526040808420338552825280842080548890039055805163a9059cbb60e01b815295881692860192909252602485018690529051929363a9059cbb9360448083019491928390030190829087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d60208110156108f857600080fd5b50506040805182815290516001600160a01b0380851692908616917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9181900360200190a3505050565b42841015610997576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b32303a3a636c61696d3a206578706972656420646561646c696e6500604482015290519081900360640190fd5b60008054600154604080516020808201939093526001600160a01b03808e1682840152808d1660608301528b16608082015260a081018a905260c08082018a90528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220808452600390915291205460ff1615610a86576040805162461bcd60e51b815260206004820152601d60248201527f42616e6b32303a3a636c61696d3a206578706972656420646967657374000000604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ae2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610b185750886001600160a01b0316816001600160a01b0316145b610b69576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a636c61696d3a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b6001600160a01b03808b166000908152600460209081526040808320938d1683529290522054871115610bda576040805162461bcd60e51b815260206004820152601460248201527342616e6b32303a3a636c61696d3a206f68206e6f60601b604482015290519081900360640190fd5b6001600160a01b038a811660008181526004602081815260408084208f87168552825280842080548e90039055805163a9059cbb60e01b8152958e1692860192909252602485018c90529051929363a9059cbb9360448083019491928390030190829087803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b505050506040513d6020811015610c7657600080fd5b5050600082815260036020908152604091829020805460ff19166001179055815189815291516001600160a01b03808c16938d821693918f16927fc1405953cccdad6b442e266c84d66ad671e2534c6584f8e6ef92802f7ad294d5929181900390910190a45050505050505050505056fe42616e6b32303a3a70617373776f72643a206578706972656420646561646c696e6542616e6b32303a3a70617373776f72643a20696e76616c6964207369676e6174757265a264697066735822122062be3fabd399c0585a8f63aea8d76c8c2f21b65e26ae43221850c7204d8a353a64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100935760003560e01c80639e317f12116100665780639e317f12146101cc578063c2d7ccdb146101fd578063d9c8a0d314610205578063d9caed1214610233578063fe12e1671461026957610093565b80633644e515146100985780636b0509b1146100b25780638340f549146100ba5780638be27cb6146100f2575b600080fd5b6100a06102c1565b60408051918252519081900360200190f35b6100a06102c7565b6100f0600480360360608110156100d057600080fd5b506001600160a01b038135811691602081013590911690604001356102cd565b005b6100f0600480360361010081101561010957600080fd5b6001600160a01b03823581169260208101359091169181019060608101604082013564010000000081111561013d57600080fd5b82018360208201111561014f57600080fd5b8035906020019184600183028401116401000000008311171561017157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505082359350505060208101359060ff60408201351690606081013590608001356103b3565b6101e9600480360360208110156101e257600080fd5b50356107ae565b604080519115158252519081900360200190f35b6100a06107c3565b6100a06004803603604081101561021b57600080fd5b506001600160a01b03813581169160200135166107c9565b6100f06004803603606081101561024957600080fd5b506001600160a01b038135811691602081013590911690604001356107e6565b6100f0600480360361010081101561028057600080fd5b506001600160a01b03813581169160208101358216916040820135169060608101359060808101359060ff60a0820135169060c08101359060e00135610942565b60005481565b60015481565b604080516323b872dd60e01b81523360048201523060248201526044810183905290516001600160a01b038516916323b872dd9160648083019260209291908290030181600087803b15801561032257600080fd5b505af1158015610336573d6000803e3d6000fd5b505050506040513d602081101561034c57600080fd5b50506001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805486019055815185815291517f5548c837ab068cf56a2c2479df0882a4922fd203edb7517321831d95078c5f629281900390910190a3505050565b428410156103f25760405162461bcd60e51b8152600401808060200182810382526022815260200180610ce86022913960400191505060405180910390fd5b600080546002548a8a8a8a8a60405160200180878152602001866001600160a01b03168152602001856001600160a01b0316815260200180602001848152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561046e578181015183820152602001610456565b50505050905090810190601f16801561049b5780820380516001836020036101000a031916815260200191505b5060408051601f19818403018152828252805160209182012061190160f01b82850152602284019c909c5260428084019c909c528151808403909c018c52606290920181528a519a82019a909a206000818152600390925299902054989950505060ff90961615955061055b945050505050576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a70617373776f72643a206578706972656420646967657374604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa1580156105b7573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906105ed5750886001600160a01b0316816001600160a01b0316145b6106285760405162461bcd60e51b8152600401808060200182810382526023815260200180610d0a6023913960400191505060405180910390fd5b6001600160a01b03808b166000908152600460209081526040808320938d16835292905220548711156106a2576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a70617373776f72643a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038a81166000818152600460208181526040808420958f16845294815284832080548d90039055845163a9059cbb60e01b81523392810192909252602482018c90529351929363a9059cbb9360448084019492939192918390030190829087803b15801561071657600080fd5b505af115801561072a573d6000803e3d6000fd5b505050506040513d602081101561074057600080fd5b5050600082815260036020908152604091829020805460ff191660011790558151898152915133926001600160a01b038d811693908f16927fb6a4de4f10443720d160a890639ebfc73808cda95283421dcc762d9d40d0dacc9281900390910190a450505050505050505050565b60036020526000908152604090205460ff1681565b60025481565b600460209081526000928352604080842090915290825290205481565b6001600160a01b038316600090815260046020908152604080832033845290915290205481111561085e576040805162461bcd60e51b815260206004820152601760248201527f42616e6b32303a3a77697468647261773a206f68206e6f000000000000000000604482015290519081900360640190fd5b6001600160a01b038381166000818152600460208181526040808420338552825280842080548890039055805163a9059cbb60e01b815295881692860192909252602485018690529051929363a9059cbb9360448083019491928390030190829087803b1580156108ce57600080fd5b505af11580156108e2573d6000803e3d6000fd5b505050506040513d60208110156108f857600080fd5b50506040805182815290516001600160a01b0380851692908616917f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9181900360200190a3505050565b42841015610997576040805162461bcd60e51b815260206004820152601f60248201527f42616e6b32303a3a636c61696d3a206578706972656420646561646c696e6500604482015290519081900360640190fd5b60008054600154604080516020808201939093526001600160a01b03808e1682840152808d1660608301528b16608082015260a081018a905260c08082018a90528251808303909101815260e08201835280519084012061190160f01b6101008301526101028201949094526101228082019490945281518082039094018452610142018152825192820192909220808452600390915291205460ff1615610a86576040805162461bcd60e51b815260206004820152601d60248201527f42616e6b32303a3a636c61696d3a206578706972656420646967657374000000604482015290519081900360640190fd5b600060018286868660405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610ae2573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610b185750886001600160a01b0316816001600160a01b0316145b610b69576040805162461bcd60e51b815260206004820181905260248201527f42616e6b32303a3a636c61696d3a20696e76616c6964207369676e6174757265604482015290519081900360640190fd5b6001600160a01b03808b166000908152600460209081526040808320938d1683529290522054871115610bda576040805162461bcd60e51b815260206004820152601460248201527342616e6b32303a3a636c61696d3a206f68206e6f60601b604482015290519081900360640190fd5b6001600160a01b038a811660008181526004602081815260408084208f87168552825280842080548e90039055805163a9059cbb60e01b8152958e1692860192909252602485018c90529051929363a9059cbb9360448083019491928390030190829087803b158015610c4c57600080fd5b505af1158015610c60573d6000803e3d6000fd5b505050506040513d6020811015610c7657600080fd5b5050600082815260036020908152604091829020805460ff19166001179055815189815291516001600160a01b03808c16938d821693918f16927fc1405953cccdad6b442e266c84d66ad671e2534c6584f8e6ef92802f7ad294d5929181900390910190a45050505050505050505056fe42616e6b32303a3a70617373776f72643a206578706972656420646561646c696e6542616e6b32303a3a70617373776f72643a20696e76616c6964207369676e6174757265a264697066735822122062be3fabd399c0585a8f63aea8d76c8c2f21b65e26ae43221850c7204d8a353a64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.dbg.json new file mode 100644 index 0000000..298a19d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.json new file mode 100644 index 0000000..851490e --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsERC.sol/DeDropsERC.json @@ -0,0 +1,204 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DeDropsERC", + "sourceName": "contracts/DeDropsERC.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "bankAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "Drop", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "bank", + "outputs": [ + { + "internalType": "contract Bank20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "drop", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "idToItem", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "address", + "name": "token", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6080604052600060015534801561001557600080fd5b50604051610b3e380380610b3e8339818101604052602081101561003857600080fd5b505160006100446100b3565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b0319166001600160a01b03929092169190911790556100b7565b3390565b610a78806100c66000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca578063a36701a9146100d2578063da9dd9c8146101eb578063f2fde38b146102c25761007d565b80631f7b6d3214610082578063715018a61461009c57806376cdb03b146100a6575b600080fd5b61008a6102e8565b60408051918252519081900360200190f35b6100a46102ee565b005b6100ae6103ac565b604080516001600160a01b039092168252519081900360200190f35b6100ae6103bb565b6100ef600480360360208110156100e857600080fd5b50356103ca565b60405180868152602001856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561014b578181015183820152602001610133565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101ab578181015183820152602001610193565b50505050905090810190601f1680156101d85780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6100a46004803603608081101561020157600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184600183028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460018302840111640100000000831117156102b757600080fd5b509092509050610515565b6100a4600480360360208110156102d857600080fd5b50356001600160a01b0316610871565b60015481565b6102f6610985565b6001600160a01b03166103076103bb565b6001600160a01b031614610362576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b6000546001600160a01b031690565b6003602081815260009283526040928390208054600180830154600280850154968501805489516101009582161595909502600019011691909104601f810187900487028401870190985287835292966001600160a01b03909116959491929183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505060048301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905085565b600060016000815460010191905081905590506040518060a00160405280828152602001886001600160a01b0316815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526003602081815260409283902085518155858201516001820180546001600160a01b0319166001600160a01b039092169190911790559285015160028401556060850151805193945061061d9392850192910190610989565b5060808201518051610639916004840191602090910190610989565b5050604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038a1692506323b872dd916064808201926020929091908290030181600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050506040513d60208110156106bc57600080fd5b50506002546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810189905290519189169163095ea7b3916044808201926020929091908290030181600087803b15801561071457600080fd5b505af1158015610728573d6000803e3d6000fd5b505050506040513d602081101561073e57600080fd5b50506002546001600160a01b0316638340f5498861075a6103bb565b896040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050866001600160a01b0316817f44a639b2fe5b0b3012d7c9309bc3e52bfcc797d913ed15979fc01d97f5fa68a988888888886040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a350505050505050565b610879610985565b6001600160a01b031661088a6103bb565b6001600160a01b0316146108e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661092a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a1d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109ca57805160ff19168380011785556109f7565b828001600101855582156109f7579182015b828111156109f75782518255916020019190600101906109dc565b50610a03929150610a07565b5090565b5b80821115610a035760008155600101610a0856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c342e1082bab898c820267d2e94ab779e34a681566009a5e23669ccc3ce5fdbf64736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100ca578063a36701a9146100d2578063da9dd9c8146101eb578063f2fde38b146102c25761007d565b80631f7b6d3214610082578063715018a61461009c57806376cdb03b146100a6575b600080fd5b61008a6102e8565b60408051918252519081900360200190f35b6100a46102ee565b005b6100ae6103ac565b604080516001600160a01b039092168252519081900360200190f35b6100ae6103bb565b6100ef600480360360208110156100e857600080fd5b50356103ca565b60405180868152602001856001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b8381101561014b578181015183820152602001610133565b50505050905090810190601f1680156101785780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b838110156101ab578181015183820152602001610193565b50505050905090810190601f1680156101d85780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6100a46004803603608081101561020157600080fd5b6001600160a01b038235169160208101359181019060608101604082013564010000000081111561023157600080fd5b82018360208201111561024357600080fd5b8035906020019184600183028401116401000000008311171561026557600080fd5b91939092909160208101903564010000000081111561028357600080fd5b82018360208201111561029557600080fd5b803590602001918460018302840111640100000000831117156102b757600080fd5b509092509050610515565b6100a4600480360360208110156102d857600080fd5b50356001600160a01b0316610871565b60015481565b6102f6610985565b6001600160a01b03166103076103bb565b6001600160a01b031614610362576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6002546001600160a01b031681565b6000546001600160a01b031690565b6003602081815260009283526040928390208054600180830154600280850154968501805489516101009582161595909502600019011691909104601f810187900487028401870190985287835292966001600160a01b03909116959491929183018282801561047b5780601f106104505761010080835404028352916020019161047b565b820191906000526020600020905b81548152906001019060200180831161045e57829003601f168201915b5050505060048301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561050b5780601f106104e05761010080835404028352916020019161050b565b820191906000526020600020905b8154815290600101906020018083116104ee57829003601f168201915b5050505050905085565b600060016000815460010191905081905590506040518060a00160405280828152602001886001600160a01b0316815260200187815260200186868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526003602081815260409283902085518155858201516001820180546001600160a01b0319166001600160a01b039092169190911790559285015160028401556060850151805193945061061d9392850192910190610989565b5060808201518051610639916004840191602090910190610989565b5050604080516323b872dd60e01b81523360048201523060248201526044810189905290516001600160a01b038a1692506323b872dd916064808201926020929091908290030181600087803b15801561069257600080fd5b505af11580156106a6573d6000803e3d6000fd5b505050506040513d60208110156106bc57600080fd5b50506002546040805163095ea7b360e01b81526001600160a01b0392831660048201526024810189905290519189169163095ea7b3916044808201926020929091908290030181600087803b15801561071457600080fd5b505af1158015610728573d6000803e3d6000fd5b505050506040513d602081101561073e57600080fd5b50506002546001600160a01b0316638340f5498861075a6103bb565b896040518463ffffffff1660e01b815260040180846001600160a01b03168152602001836001600160a01b031681526020018281526020019350505050600060405180830381600087803b1580156107b157600080fd5b505af11580156107c5573d6000803e3d6000fd5b50505050866001600160a01b0316817f44a639b2fe5b0b3012d7c9309bc3e52bfcc797d913ed15979fc01d97f5fa68a988888888886040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a350505050505050565b610879610985565b6001600160a01b031661088a6103bb565b6001600160a01b0316146108e5576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03811661092a5760405162461bcd60e51b8152600401808060200182810382526026815260200180610a1d6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106109ca57805160ff19168380011785556109f7565b828001600101855582156109f7579182015b828111156109f75782518255916020019190600101906109dc565b50610a03929150610a07565b5090565b5b80821115610a035760008155600101610a0856fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373a2646970667358221220c342e1082bab898c820267d2e94ab779e34a681566009a5e23669ccc3ce5fdbf64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.dbg.json new file mode 100644 index 0000000..298a19d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json new file mode 100644 index 0000000..99f65c9 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json @@ -0,0 +1,500 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "DeDropsNFT", + "sourceName": "contracts/DeDropsNFT.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "address", + "name": "bankAddress", + "type": "address" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "Drop", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bank", + "outputs": [ + { + "internalType": "contract Bank1155", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "idToItem", + "outputs": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "length", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "string", + "name": "info", + "type": "string" + }, + { + "internalType": "string", + "name": "info2", + "type": "string" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405260006005553480156200001657600080fd5b506040516200220e3803806200220e833981810160405260208110156200003c57600080fd5b505160408051808201909152600b81526a3232b23937b839973c3cbd60a91b6020820152620000726301ffc9a760e01b62000122565b6200007d81620001a7565b6200008f636cdb3d1360e11b62000122565b620000a16303a24d0760e21b62000122565b506000620000ae620001c0565b600480546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600680546001600160a01b0319166001600160a01b039290921691909117905562000260565b6001600160e01b0319808216141562000182576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001bc906003906020840190620001c4565b5050565b3390565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200020757805160ff191683800117855562000237565b8280016001018555821562000237579182015b82811115620002375782518255916020019190600101906200021a565b506200024592915062000249565b5090565b5b808211156200024557600081556001016200024a565b611f9e80620002706000396000f3fe608060405234801561001057600080fd5b50600436106100f45760003560e01c8063715018a611610097578063a36701a911610066578063a36701a914610669578063e985e9c514610772578063f242432a146107a0578063f2fde38b14610869576100f4565b8063715018a61461060757806376cdb03b1461060f5780638da5cb5b14610633578063a22cb4651461063b576100f4565b80631f7b6d32116100d35780631f7b6d32146102045780632825df7b1461020c5780632eb2c2d6146102d35780634e1273f414610494576100f4565b8062fdd58e146100f957806301ffc9a7146101375780630e89341c14610172575b600080fd5b6101256004803603604081101561010f57600080fd5b506001600160a01b03813516906020013561088f565b60408051918252519081900360200190f35b61015e6004803603602081101561014d57600080fd5b50356001600160e01b0319166108fe565b604080519115158252519081900360200190f35b61018f6004803603602081101561018857600080fd5b503561091d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101256109b5565b6102d16004803603606081101561022257600080fd5b81359190810190604081016020820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b919390929091602081019035600160201b81111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111600160201b831117156102c657600080fd5b5090925090506109bb565b005b6102d1600480360360a08110156102e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561031c57600080fd5b82018360208201111561032e57600080fd5b803590602001918460208302840111600160201b8311171561034f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561039e57600080fd5b8201836020820111156103b057600080fd5b803590602001918460208302840111600160201b831117156103d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b86945050505050565b6105b7600480360360408110156104aa57600080fd5b810190602081018135600160201b8111156104c457600080fd5b8201836020820111156104d657600080fd5b803590602001918460208302840111600160201b831117156104f757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561054657600080fd5b82018360208201111561055857600080fd5b803590602001918460208302840111600160201b8311171561057957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e84945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105f35781810151838201526020016105db565b505050509050019250505060405180910390f35b6102d1610f70565b61061761102e565b604080516001600160a01b039092168252519081900360200190f35b61061761103d565b6102d16004803603604081101561065157600080fd5b506001600160a01b038135169060200135151561104d565b6106866004803603602081101561067f57600080fd5b503561113c565b604051808581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156106d35781810151838201526020016106bb565b50505050905090810190601f1680156107005780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561073357818101518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61015e6004803603604081101561078857600080fd5b506001600160a01b0381358116916020013516611275565b6102d1600480360360a08110156107b657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156107f557600080fd5b82018360208201111561080757600080fd5b803590602001918460018302840111600160201b8311171561082857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112a3945050505050565b6102d16004803603602081101561087f57600080fd5b50356001600160a01b031661146e565b60006001600160a01b0383166108d65760405162461bcd60e51b815260040180806020018281038252602b815260200180611dd3602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b50505050509050919050565b60055481565b60058054600101908190556040805160808101825282815260208082018990528251601f880182900482028101820184528781529192830191908890889081908401838280828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526007602090815260409182902084518155848201516001820155918401518051929350610a859260028501929190910190611c38565b5060608201518051610aa1916003840191602090910190611c38565b50905050610ac033828860405180602001604052806000815250611583565b600654610ae99033906001600160a01b03168389610ae4610adf61103d565b61168b565b6112a3565b807fd98d7d262ee69a0e7f1e002c08e8f5432b5b407f3fbc7dacf22c4901c3b9ffb887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a2505050505050565b8151835114610bc65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f206028913960400191505060405180910390fd5b6001600160a01b038416610c0b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b610c13611702565b6001600160a01b0316856001600160a01b03161480610c3e5750610c3e85610c39611702565b611275565b610c795760405162461bcd60e51b8152600401808060200182810382526032815260200180611e726032913960400191505060405180910390fd5b6000610c83611702565b9050610c93818787878787610e7c565b60005b8451811015610d94576000858281518110610cad57fe5b602002602001015190506000858381518110610cc557fe5b60200260200101519050610d32816040518060600160405280602a8152602001611ea4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546117069092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610d69908261179d565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610c96565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e1a578181015183820152602001610e02565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e59578181015183820152602001610e41565b5050505090500194505050505060405180910390a4610e7c8187878787876117fe565b505050505050565b60608151835114610ec65760405162461bcd60e51b8152600401808060200182810382526029815260200180611ef76029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610ee057600080fd5b50604051908082528060200260200182016040528015610f0a578160200160208202803683370190505b50905060005b8451811015610f6857610f49858281518110610f2857fe5b6020026020010151858381518110610f3c57fe5b602002602001015161088f565b828281518110610f5557fe5b6020908102919091010152600101610f10565b509392505050565b610f78611702565b6001600160a01b0316610f8961103d565b6001600160a01b031614610fe4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6006546001600160a01b031681565b6004546001600160a01b03165b90565b816001600160a01b031661105f611702565b6001600160a01b031614156110a55760405162461bcd60e51b8152600401808060200182810382526029815260200180611ece6029913960400191505060405180910390fd5b80600260006110b2611702565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110f6611702565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60076020908152600091825260409182902080546001808301546002808501805488519481161561010002600019011691909104601f8101879004870284018701909752868352929590949192918301828280156111db5780601f106111b0576101008083540402835291602001916111db565b820191906000526020600020905b8154815290600101906020018083116111be57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b5050505050905084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166112e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b6112f0611702565b6001600160a01b0316856001600160a01b03161480611316575061131685610c39611702565b6113515760405162461bcd60e51b8152600401808060200182810382526029815260200180611e246029913960400191505060405180910390fd5b600061135b611702565b905061137b81878761136c88611a7d565b61137588611a7d565b87610e7c565b6113c2836040518060600160405280602a8152602001611ea4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190611706565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546113f9908461179d565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610e7c818787878787611ac1565b611476611702565b6001600160a01b031661148761103d565b6001600160a01b0316146114e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166115275760405162461bcd60e51b8152600401808060200182810382526026815260200180611dfe6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0384166115c85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f486021913960400191505060405180910390fd5b60006115d2611702565b90506115e48160008761136c88611a7d565b60008481526001602090815260408083206001600160a01b0389168452909152902054611611908461179d565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a461168481600087878787611ac1565b5050505050565b60408051601480825281830190925260609183831b91839160208201818036833701905050905060005b60148160ff161015610f6857828160ff16601481106116d057fe5b1a60f81b828260ff16815181106116e357fe5b60200101906001600160f81b031916908160001a9053506001016116b5565b3390565b600081848411156117955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a578181015183820152602001611742565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611810846001600160a01b0316611c32565b15610e7c57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561189e578181015183820152602001611886565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611919578181015183820152602001611901565b50505050905090810190601f1680156119465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561196b57600080fd5b505af192505050801561199057506040513d602081101561198b57600080fd5b505160015b611a255761199c611cd1565b806119a757506119ee565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561175a578181015183820152602001611742565b60405162461bcd60e51b8152600401808060200182810382526034815260200180611d776034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b50505050505050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110611ab057fe5b602090810291909101015292915050565b611ad3846001600160a01b0316611c32565b15610e7c57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611bb257600080fd5b505af1925050508015611bd757506040513d6020811015611bd257600080fd5b505160015b611be35761199c611cd1565b6001600160e01b0319811663f23a6e6160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca6565b82800160010185558215611ca6579182015b82811115611ca6578251825591602001919060010190611c8b565b50611cb2929150611cb6565b5090565b5b80821115611cb25760008155600101611cb7565b60e01c90565b600060443d1015611ce15761104a565b600481823e6308c379a0611cf58251611ccb565b14611cff5761104a565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715611d2f575050505061104a565b82840192508251915080821115611d49575050505061104a565b503d83016020828401011115611d615750505061104a565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212209702282f04d6f2e9a04143d3f725d5c892fc23a203ac3b39d6f699a36dec15a764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100f45760003560e01c8063715018a611610097578063a36701a911610066578063a36701a914610669578063e985e9c514610772578063f242432a146107a0578063f2fde38b14610869576100f4565b8063715018a61461060757806376cdb03b1461060f5780638da5cb5b14610633578063a22cb4651461063b576100f4565b80631f7b6d32116100d35780631f7b6d32146102045780632825df7b1461020c5780632eb2c2d6146102d35780634e1273f414610494576100f4565b8062fdd58e146100f957806301ffc9a7146101375780630e89341c14610172575b600080fd5b6101256004803603604081101561010f57600080fd5b506001600160a01b03813516906020013561088f565b60408051918252519081900360200190f35b61015e6004803603602081101561014d57600080fd5b50356001600160e01b0319166108fe565b604080519115158252519081900360200190f35b61018f6004803603602081101561018857600080fd5b503561091d565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101c95781810151838201526020016101b1565b50505050905090810190601f1680156101f65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101256109b5565b6102d16004803603606081101561022257600080fd5b81359190810190604081016020820135600160201b81111561024357600080fd5b82018360208201111561025557600080fd5b803590602001918460018302840111600160201b8311171561027657600080fd5b919390929091602081019035600160201b81111561029357600080fd5b8201836020820111156102a557600080fd5b803590602001918460018302840111600160201b831117156102c657600080fd5b5090925090506109bb565b005b6102d1600480360360a08110156102e957600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b81111561031c57600080fd5b82018360208201111561032e57600080fd5b803590602001918460208302840111600160201b8311171561034f57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561039e57600080fd5b8201836020820111156103b057600080fd5b803590602001918460208302840111600160201b831117156103d157600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561042057600080fd5b82018360208201111561043257600080fd5b803590602001918460018302840111600160201b8311171561045357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610b86945050505050565b6105b7600480360360408110156104aa57600080fd5b810190602081018135600160201b8111156104c457600080fd5b8201836020820111156104d657600080fd5b803590602001918460208302840111600160201b831117156104f757600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561054657600080fd5b82018360208201111561055857600080fd5b803590602001918460208302840111600160201b8311171561057957600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610e84945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156105f35781810151838201526020016105db565b505050509050019250505060405180910390f35b6102d1610f70565b61061761102e565b604080516001600160a01b039092168252519081900360200190f35b61061761103d565b6102d16004803603604081101561065157600080fd5b506001600160a01b038135169060200135151561104d565b6106866004803603602081101561067f57600080fd5b503561113c565b604051808581526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156106d35781810151838201526020016106bb565b50505050905090810190601f1680156107005780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561073357818101518382015260200161071b565b50505050905090810190601f1680156107605780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390f35b61015e6004803603604081101561078857600080fd5b506001600160a01b0381358116916020013516611275565b6102d1600480360360a08110156107b657600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b8111156107f557600080fd5b82018360208201111561080757600080fd5b803590602001918460018302840111600160201b8311171561082857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506112a3945050505050565b6102d16004803603602081101561087f57600080fd5b50356001600160a01b031661146e565b60006001600160a01b0383166108d65760405162461bcd60e51b815260040180806020018281038252602b815260200180611dd3602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156109a95780601f1061097e576101008083540402835291602001916109a9565b820191906000526020600020905b81548152906001019060200180831161098c57829003601f168201915b50505050509050919050565b60055481565b60058054600101908190556040805160808101825282815260208082018990528251601f880182900482028101820184528781529192830191908890889081908401838280828437600092019190915250505090825250604080516020601f87018190048102820181019092528581529181019190869086908190840183828082843760009201829052509390945250508381526007602090815260409182902084518155848201516001820155918401518051929350610a859260028501929190910190611c38565b5060608201518051610aa1916003840191602090910190611c38565b50905050610ac033828860405180602001604052806000815250611583565b600654610ae99033906001600160a01b03168389610ae4610adf61103d565b61168b565b6112a3565b807fd98d7d262ee69a0e7f1e002c08e8f5432b5b407f3fbc7dacf22c4901c3b9ffb887878787876040518086815260200180602001806020018381038352878782818152602001925080828437600083820152601f01601f191690910184810383528581526020019050858580828437600083820152604051601f909101601f1916909201829003995090975050505050505050a2505050505050565b8151835114610bc65760405162461bcd60e51b8152600401808060200182810382526028815260200180611f206028913960400191505060405180910390fd5b6001600160a01b038416610c0b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b610c13611702565b6001600160a01b0316856001600160a01b03161480610c3e5750610c3e85610c39611702565b611275565b610c795760405162461bcd60e51b8152600401808060200182810382526032815260200180611e726032913960400191505060405180910390fd5b6000610c83611702565b9050610c93818787878787610e7c565b60005b8451811015610d94576000858281518110610cad57fe5b602002602001015190506000858381518110610cc557fe5b60200260200101519050610d32816040518060600160405280602a8152602001611ea4602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546117069092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610d69908261179d565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610c96565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610e1a578181015183820152602001610e02565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610e59578181015183820152602001610e41565b5050505090500194505050505060405180910390a4610e7c8187878787876117fe565b505050505050565b60608151835114610ec65760405162461bcd60e51b8152600401808060200182810382526029815260200180611ef76029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610ee057600080fd5b50604051908082528060200260200182016040528015610f0a578160200160208202803683370190505b50905060005b8451811015610f6857610f49858281518110610f2857fe5b6020026020010151858381518110610f3c57fe5b602002602001015161088f565b828281518110610f5557fe5b6020908102919091010152600101610f10565b509392505050565b610f78611702565b6001600160a01b0316610f8961103d565b6001600160a01b031614610fe4576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600480546001600160a01b0319169055565b6006546001600160a01b031681565b6004546001600160a01b03165b90565b816001600160a01b031661105f611702565b6001600160a01b031614156110a55760405162461bcd60e51b8152600401808060200182810382526029815260200180611ece6029913960400191505060405180910390fd5b80600260006110b2611702565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff1916921515929092179091556110f6611702565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b60076020908152600091825260409182902080546001808301546002808501805488519481161561010002600019011691909104601f8101879004870284018701909752868352929590949192918301828280156111db5780601f106111b0576101008083540402835291602001916111db565b820191906000526020600020905b8154815290600101906020018083116111be57829003601f168201915b5050505060038301805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815294959493509083018282801561126b5780601f106112405761010080835404028352916020019161126b565b820191906000526020600020905b81548152906001019060200180831161124e57829003601f168201915b5050505050905084565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b0384166112e85760405162461bcd60e51b8152600401808060200182810382526025815260200180611e4d6025913960400191505060405180910390fd5b6112f0611702565b6001600160a01b0316856001600160a01b03161480611316575061131685610c39611702565b6113515760405162461bcd60e51b8152600401808060200182810382526029815260200180611e246029913960400191505060405180910390fd5b600061135b611702565b905061137b81878761136c88611a7d565b61137588611a7d565b87610e7c565b6113c2836040518060600160405280602a8152602001611ea4602a913960008781526001602090815260408083206001600160a01b038d1684529091529020549190611706565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546113f9908461179d565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610e7c818787878787611ac1565b611476611702565b6001600160a01b031661148761103d565b6001600160a01b0316146114e2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166115275760405162461bcd60e51b8152600401808060200182810382526026815260200180611dfe6026913960400191505060405180910390fd5b6004546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600480546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0384166115c85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f486021913960400191505060405180910390fd5b60006115d2611702565b90506115e48160008761136c88611a7d565b60008481526001602090815260408083206001600160a01b0389168452909152902054611611908461179d565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a461168481600087878787611ac1565b5050505050565b60408051601480825281830190925260609183831b91839160208201818036833701905050905060005b60148160ff161015610f6857828160ff16601481106116d057fe5b1a60f81b828260ff16815181106116e357fe5b60200101906001600160f81b031916908160001a9053506001016116b5565b3390565b600081848411156117955760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561175a578181015183820152602001611742565b50505050905090810190601f1680156117875780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156117f7576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b611810846001600160a01b0316611c32565b15610e7c57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b8381101561189e578181015183820152602001611886565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156118dd5781810151838201526020016118c5565b50505050905001848103825285818151815260200191508051906020019080838360005b83811015611919578181015183820152602001611901565b50505050905090810190601f1680156119465780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561196b57600080fd5b505af192505050801561199057506040513d602081101561198b57600080fd5b505160015b611a255761199c611cd1565b806119a757506119ee565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561175a578181015183820152602001611742565b60405162461bcd60e51b8152600401808060200182810382526034815260200180611d776034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b50505050505050565b604080516001808252818301909252606091829190602080830190803683370190505090508281600081518110611ab057fe5b602090810291909101015292915050565b611ad3846001600160a01b0316611c32565b15610e7c57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611b62578181015183820152602001611b4a565b50505050905090810190601f168015611b8f5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b158015611bb257600080fd5b505af1925050508015611bd757506040513d6020811015611bd257600080fd5b505160015b611be35761199c611cd1565b6001600160e01b0319811663f23a6e6160e01b14611a745760405162461bcd60e51b8152600401808060200182810382526028815260200180611dab6028913960400191505060405180910390fd5b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c7957805160ff1916838001178555611ca6565b82800160010185558215611ca6579182015b82811115611ca6578251825591602001919060010190611c8b565b50611cb2929150611cb6565b5090565b5b80821115611cb25760008155600101611cb7565b60e01c90565b600060443d1015611ce15761104a565b600481823e6308c379a0611cf58251611ccb565b14611cff5761104a565b6040513d600319016004823e80513d67ffffffffffffffff8160248401118184111715611d2f575050505061104a565b82840192508251915080821115611d49575050505061104a565b503d83016020828401011115611d615750505061104a565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a26469706673582212209702282f04d6f2e9a04143d3f725d5c892fc23a203ac3b39d6f699a36dec15a764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json new file mode 100644 index 0000000..e023864 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4aacc3b670db955d3261359ab52c871b.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.json new file mode 100644 index 0000000..2cc0d0c --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/interfaces/IERC20.sol/IERC20.json @@ -0,0 +1,184 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "IERC20", + "sourceName": "contracts/interfaces/IERC20.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.dbg.json new file mode 100644 index 0000000..e023864 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/4aacc3b670db955d3261359ab52c871b.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.json new file mode 100644 index 0000000..0315d30 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeERC20.sol/SafeERC20.json @@ -0,0 +1,30 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeERC20", + "sourceName": "contracts/libraries/SafeERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "contract IERC20", + "name": "token", + "type": "IERC20" + } + ], + "name": "safeDecimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6101b8610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806372a58ae11461003a575b600080fd5b6100606004803603602081101561005057600080fd5b50356001600160a01b0316610076565b6040805160ff9092168252519081900360200190f35b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815160009384936060936001600160a01b03881693919290918291908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b5091509150818015610157575080516020145b61016257601261017a565b80806020019051602081101561017757600080fd5b50515b94935050505056fea2646970667358221220a1d1a31b24fc42d9f594e24c83319b7b8be1e8512efe81989bf635d00d446ac964736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c806372a58ae11461003a575b600080fd5b6100606004803603602081101561005057600080fd5b50356001600160a01b0316610076565b6040805160ff9092168252519081900360200190f35b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1781529151815160009384936060936001600160a01b03881693919290918291908083835b602083106100df5780518252601f1990920191602091820191016100c0565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d806000811461013f576040519150601f19603f3d011682016040523d82523d6000602084013e610144565b606091505b5091509150818015610157575080516020145b61016257601261017a565b80806020019051602081101561017757600080fd5b50515b94935050505056fea2646970667358221220a1d1a31b24fc42d9f594e24c83319b7b8be1e8512efe81989bf635d00d446ac964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.dbg.json new file mode 100644 index 0000000..a0495f4 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/635883b35bf7d1915fb55ff78885e0c2.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.json new file mode 100644 index 0000000..de51e1e --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath", + "sourceName": "contracts/libraries/SafeMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d72186fa182d6af9310a538615aa0a27ed733e843c1a16e093c39be567e47664736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122017d72186fa182d6af9310a538615aa0a27ed733e843c1a16e093c39be567e47664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.dbg.json new file mode 100644 index 0000000..a0495f4 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/635883b35bf7d1915fb55ff78885e0c2.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.json new file mode 100644 index 0000000..87593af --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/libraries/SafeMath.sol/SafeMath128.json @@ -0,0 +1,10 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "SafeMath128", + "sourceName": "contracts/libraries/SafeMath.sol", + "abi": [], + "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa6e57a2f33c5a3f3be53451e12da38f37a6c8a5ea647ec75b19c38c3536ab0964736f6c634300060c0033", + "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220fa6e57a2f33c5a3f3be53451e12da38f37a6c8a5ea647ec75b19c38c3536ab0964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.dbg.json new file mode 100644 index 0000000..a0495f4 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/635883b35bf7d1915fb55ff78885e0c2.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.json new file mode 100644 index 0000000..ffebf9f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/MockERC20.sol/MockERC20.json @@ -0,0 +1,342 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "MockERC20", + "sourceName": "contracts/test/MockERC20.sol", + "abi": [ + { + "inputs": [ + { + "internalType": "string", + "name": "_symbol", + "type": "string" + }, + { + "internalType": "uint256", + "name": "_totalSupply", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "_decimals", + "type": "uint8" + } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [ + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "nonces", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "spender", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "deadline", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "v", + "type": "uint8" + }, + { + "internalType": "bytes32", + "name": "r", + "type": "bytes32" + }, + { + "internalType": "bytes32", + "name": "s", + "type": "bytes32" + } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405162000c6538038062000c658339818101604052606081101561003557600080fd5b810190808051604051939291908464010000000082111561005557600080fd5b90830190602082018581111561006a57600080fd5b825164010000000081118282018810171561008457600080fd5b82525081516020918201929091019080838360005b838110156100b1578181015183820152602001610099565b50505050905090810190601f1680156100de5780820380516001836020036101000a031916815260200191505b506040818152602083810151938201518383018352600a8452692a32b9ba102a37b5b2b760b11b938201939093528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f81e8ad438398ab0d4a2a7ecb159490c091bb27c67ace5181f70084e30fadaea2818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c09092019093528051908201206005558651939550919350916101d891600091908701906102fc565b506001805460ff191660ff84161790556101f233846101fb565b5050505061038f565b6102148160025461029e60201b6106e11790919060201c565b6002556001600160a01b0382166000908152600360209081526040909120546102469183906106e161029e821b17901c565b6001600160a01b03831660008181526003602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b818101818110156102f6576040805162461bcd60e51b815260206004820152601660248201527f536166654d6174683a20416464204f766572666c6f7700000000000000000000604482015290519081900360640190fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061033d57805160ff191683800117855561036a565b8280016001018555821561036a579182015b8281111561036a57825182559160200191906001019061034f565b5061037692915061037a565b5090565b5b80821115610376576000815560010161037b565b6108c6806200039f6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103e7565b6101f161040b565b6040805160ff9092168252519081900360200190f35b610199610414565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041a565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042c565b6100dc61043e565b61017d6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356104cc565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104d9565b005b610199600480360360408110156102f857600080fd5b506001600160a01b03813581169160200135166106c4565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610732565b5060015b92915050565b60025481565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146103d2576001600160a01b03841660009081526004602090815260408083203384529091529020546103ad9083610794565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6103dd8484846107e2565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60015460ff1681565b60055481565b60036020526000908152604090205481565b60066020526000908152604090205481565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b505050505081565b60006103433384846107e2565b42841015610518576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6005546001600160a01b0380891660008181526006602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106695750886001600160a01b0316816001600160a01b0316145b6106ae576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6106b9898989610732565b505050505050505050565b600460209081526000928352604080842090915290825290205481565b81810181811015610347576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546108059082610794565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461083490826106e1565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220ce3d71930af266043a300cd4d77527a648fc34debb947613dfd75e29ef848e0964736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461025b578063a9059cbb14610263578063d505accf1461028f578063dd62ed3e146102e2576100cf565b80633644e5151461020757806370a082311461020f5780637ecebe0014610235576100cf565b806306fdde03146100d4578063095ea7b31461015157806318160ddd1461019157806323b872dd146101ab57806330adf81f146101e1578063313ce567146101e9575b600080fd5b6100dc610310565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101165781810151838201526020016100fe565b50505050905090810190601f1680156101435780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61017d6004803603604081101561016757600080fd5b506001600160a01b038135169060200135610336565b604080519115158252519081900360200190f35b61019961034d565b60408051918252519081900360200190f35b61017d600480360360608110156101c157600080fd5b506001600160a01b03813581169160208101359091169060400135610353565b6101996103e7565b6101f161040b565b6040805160ff9092168252519081900360200190f35b610199610414565b6101996004803603602081101561022557600080fd5b50356001600160a01b031661041a565b6101996004803603602081101561024b57600080fd5b50356001600160a01b031661042c565b6100dc61043e565b61017d6004803603604081101561027957600080fd5b506001600160a01b0381351690602001356104cc565b6102e0600480360360e08110156102a557600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c001356104d9565b005b610199600480360360408110156102f857600080fd5b506001600160a01b03813581169160200135166106c4565b6040518060400160405280600a8152602001692a32b9ba102a37b5b2b760b11b81525081565b6000610343338484610732565b5060015b92915050565b60025481565b6001600160a01b0383166000908152600460209081526040808320338452909152812054600019146103d2576001600160a01b03841660009081526004602090815260408083203384529091529020546103ad9083610794565b6001600160a01b03851660009081526004602090815260408083203384529091529020555b6103dd8484846107e2565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60015460ff1681565b60055481565b60036020526000908152604090205481565b60066020526000908152604090205481565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156104c45780601f10610499576101008083540402835291602001916104c4565b820191906000526020600020905b8154815290600101906020018083116104a757829003601f168201915b505050505081565b60006103433384846107e2565b42841015610518576040805162461bcd60e51b81526020600482015260076024820152661156141254915160ca1b604482015290519081900360640190fd5b6005546001600160a01b0380891660008181526006602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e08501825280519083012061190160f01b6101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e280820193601f1981019281900390910190855afa158015610633573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106695750886001600160a01b0316816001600160a01b0316145b6106ae576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b6106b9898989610732565b505050505050505050565b600460209081526000928352604080842090915290825290205481565b81810181811015610347576040805162461bcd60e51b8152602060048201526016602482015275536166654d6174683a20416464204f766572666c6f7760501b604482015290519081900360640190fd5b6001600160a01b03808416600081815260046020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b80820382811115610347576040805162461bcd60e51b8152602060048201526013602482015272536166654d6174683a20556e646572666c6f7760681b604482015290519081900360640190fd5b6001600160a01b0383166000908152600360205260409020546108059082610794565b6001600160a01b03808516600090815260036020526040808220939093559084168152205461083490826106e1565b6001600160a01b0380841660008181526003602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220ce3d71930af266043a300cd4d77527a648fc34debb947613dfd75e29ef848e0964736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.dbg.json new file mode 100644 index 0000000..7342b2d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.json new file mode 100644 index 0000000..c92edbf --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT1155.sol/TestNFT1155.json @@ -0,0 +1,384 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TestNFT1155", + "sourceName": "contracts/test/TestNFT1155.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "values", + "type": "uint256[]" + } + ], + "name": "TransferBatch", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "value", + "type": "uint256" + } + ], + "name": "TransferSingle", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "value", + "type": "string" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "URI", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address[]", + "name": "accounts", + "type": "address[]" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + } + ], + "name": "balanceOfBatch", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "mintBatch", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256[]", + "name": "ids", + "type": "uint256[]" + }, + { + "internalType": "uint256[]", + "name": "amounts", + "type": "uint256[]" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeBatchTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "uri", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b5060408051808201909152600b81526a546573744e46543131353560a81b6020820152620000466301ffc9a760e01b6200007c565b620000518162000101565b62000063636cdb3d1360e11b6200007c565b620000756303a24d0760e21b6200007c565b50620001b6565b6001600160e01b03198082161415620000dc576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b8051620001169060039060208401906200011a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200015d57805160ff19168380011785556200018d565b828001600101855582156200018d579182015b828111156200018d57825182559160200191906001019062000170565b506200019b9291506200019f565b5090565b5b808211156200019b5760008155600101620001a0565b611bd080620001c66000396000f3fe608060405234801561001057600080fd5b506004361061009d5760003560e01c80634e1273f4116100665780634e1273f414610528578063731133e91461069b578063a22cb4651461075b578063e985e9c514610789578063f242432a146107b75761009d565b8062fdd58e146100a257806301ffc9a7146100e05780630e89341c1461011b5780631f7fdffa146101ad5780632eb2c2d614610367575b600080fd5b6100ce600480360360408110156100b857600080fd5b506001600160a01b038135169060200135610880565b60408051918252519081900360200190f35b610107600480360360208110156100f657600080fd5b50356001600160e01b0319166108ef565b604080519115158252519081900360200190f35b6101386004803603602081101561013157600080fd5b503561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610365600480360360808110156101c357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026f57600080fd5b82018360208201111561028157600080fd5b803590602001918460208302840111600160201b831117156102a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111600160201b8311171561032457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a6945050505050565b005b610365600480360360a081101561037d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460208302840111600160201b8311171561046557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104b457600080fd5b8201836020820111156104c657600080fd5b803590602001918460018302840111600160201b831117156104e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b8945050505050565b61064b6004803603604081101561053e57600080fd5b810190602081018135600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460208302840111600160201b8311171561058b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105da57600080fd5b8201836020820111156105ec57600080fd5b803590602001918460208302840111600160201b8311171561060d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cb6945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068757818101518382015260200161066f565b505050509050019250505060405180910390f35b610365600480360360808110156106b157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106e757600080fd5b8201836020820111156106f957600080fd5b803590602001918460018302840111600160201b8311171561071a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610da2945050505050565b6103656004803603604081101561077157600080fd5b506001600160a01b0381351690602001351515610dae565b6101076004803603604081101561079f57600080fd5b506001600160a01b0381358116916020013516610e9d565b610365600480360360a08110156107cd57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ecb945050505050565b60006001600160a01b0383166108c75760405162461bcd60e51b815260040180806020018281038252602b815260200180611a2b602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561099a5780601f1061096f5761010080835404028352916020019161099a565b820191906000526020600020905b81548152906001019060200180831161097d57829003601f168201915b50505050509050919050565b6109b284848484611096565b50505050565b81518351146109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b6001600160a01b038416610a3d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610a456112eb565b6001600160a01b0316856001600160a01b03161480610a705750610a7085610a6b6112eb565b610e9d565b610aab5760405162461bcd60e51b8152600401808060200182810382526032815260200180611aa46032913960400191505060405180910390fd5b6000610ab56112eb565b9050610ac5818787878787610cae565b60005b8451811015610bc6576000858281518110610adf57fe5b602002602001015190506000858381518110610af757fe5b60200260200101519050610b64816040518060600160405280602a8152602001611ad6602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546112f09092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610b9b9082611387565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610ac8565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610c4c578181015183820152602001610c34565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610c8b578181015183820152602001610c73565b5050505090500194505050505060405180910390a4610cae8187878787876113e8565b505050505050565b60608151835114610cf85760405162461bcd60e51b8152600401808060200182810382526029815260200180611b296029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610d1257600080fd5b50604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b50905060005b8451811015610d9a57610d7b858281518110610d5a57fe5b6020026020010151858381518110610d6e57fe5b6020026020010151610880565b828281518110610d8757fe5b6020908102919091010152600101610d42565b509392505050565b6109b284848484611667565b816001600160a01b0316610dc06112eb565b6001600160a01b03161415610e065760405162461bcd60e51b8152600401808060200182810382526029815260200180611b006029913960400191505060405180910390fd5b8060026000610e136112eb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610e576112eb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610f105760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610f186112eb565b6001600160a01b0316856001600160a01b03161480610f3e5750610f3e85610a6b6112eb565b610f795760405162461bcd60e51b8152600401808060200182810382526029815260200180611a566029913960400191505060405180910390fd5b6000610f836112eb565b9050610fa3818787610f9488611768565b610f9d88611768565b87610cae565b610fea836040518060600160405280602a8152602001611ad6602a913960008781526001602090815260408083206001600160a01b038d16845290915290205491906112f0565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546110219084611387565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610cae8187878787876117ac565b6001600160a01b0384166110db5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b815183511461111b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b60006111256112eb565b905061113681600087878787610cae565b60005b84518110156111fa576111b16001600087848151811061115557fe5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061119b57fe5b602002602001015161138790919063ffffffff16565b600160008784815181106111c157fe5b602090810291909101810151825281810192909252604090810160009081206001600160a01b038b168252909252902055600101611139565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611281578181015183820152602001611269565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156112c05781810151838201526020016112a8565b5050505090500194505050505060405180910390a46112e4816000878787876113e8565b5050505050565b335b90565b6000818484111561137f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134457818101518382015260200161132c565b50505050905090810190601f1680156113715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6113fa846001600160a01b031661191d565b15610cae57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611488578181015183820152602001611470565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156114c75781810151838201526020016114af565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115035781810151838201526020016114eb565b50505050905090810190601f1680156115305780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561155557600080fd5b505af192505050801561157a57506040513d602081101561157557600080fd5b505160015b61160f57611586611929565b8061159157506115d8565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561134457818101518382015260200161132c565b60405162461bcd60e51b81526004018080602001828103825260348152602001806119cf6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0384166116ac5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b60006116b66112eb565b90506116c881600087610f9488611768565b60008481526001602090815260408083206001600160a01b03891684529091529020546116f59084611387565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a46112e4816000878787876117ac565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061179b57fe5b602090810291909101015292915050565b6117be846001600160a01b031661191d565b15610cae57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561184d578181015183820152602001611835565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561189d57600080fd5b505af19250505080156118c257506040513d60208110156118bd57600080fd5b505160015b6118ce57611586611929565b6001600160e01b0319811663f23a6e6160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d1015611939576112ed565b600481823e6308c379a061194d8251611923565b14611957576112ed565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561198757505050506112ed565b828401925082519150808211156119a157505050506112ed565b503d830160208284010111156119b9575050506112ed565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220f4b453b2c3187a713b45299ad9f641ddd1cb606ec1c4a9781dc891c1e7bb6a7664736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061009d5760003560e01c80634e1273f4116100665780634e1273f414610528578063731133e91461069b578063a22cb4651461075b578063e985e9c514610789578063f242432a146107b75761009d565b8062fdd58e146100a257806301ffc9a7146100e05780630e89341c1461011b5780631f7fdffa146101ad5780632eb2c2d614610367575b600080fd5b6100ce600480360360408110156100b857600080fd5b506001600160a01b038135169060200135610880565b60408051918252519081900360200190f35b610107600480360360208110156100f657600080fd5b50356001600160e01b0319166108ef565b604080519115158252519081900360200190f35b6101386004803603602081101561013157600080fd5b503561090e565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561017257818101518382015260200161015a565b50505050905090810190601f16801561019f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610365600480360360808110156101c357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460208302840111600160201b8311171561022057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561026f57600080fd5b82018360208201111561028157600080fd5b803590602001918460208302840111600160201b831117156102a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102f157600080fd5b82018360208201111561030357600080fd5b803590602001918460018302840111600160201b8311171561032457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a6945050505050565b005b610365600480360360a081101561037d57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561043257600080fd5b82018360208201111561044457600080fd5b803590602001918460208302840111600160201b8311171561046557600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156104b457600080fd5b8201836020820111156104c657600080fd5b803590602001918460018302840111600160201b831117156104e757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109b8945050505050565b61064b6004803603604081101561053e57600080fd5b810190602081018135600160201b81111561055857600080fd5b82018360208201111561056a57600080fd5b803590602001918460208302840111600160201b8311171561058b57600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105da57600080fd5b8201836020820111156105ec57600080fd5b803590602001918460208302840111600160201b8311171561060d57600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929550610cb6945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561068757818101518382015260200161066f565b505050509050019250505060405180910390f35b610365600480360360808110156106b157600080fd5b6001600160a01b038235169160208101359160408201359190810190608081016060820135600160201b8111156106e757600080fd5b8201836020820111156106f957600080fd5b803590602001918460018302840111600160201b8311171561071a57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610da2945050505050565b6103656004803603604081101561077157600080fd5b506001600160a01b0381351690602001351515610dae565b6101076004803603604081101561079f57600080fd5b506001600160a01b0381358116916020013516610e9d565b610365600480360360a08110156107cd57600080fd5b6001600160a01b03823581169260208101359091169160408201359160608101359181019060a081016080820135600160201b81111561080c57600080fd5b82018360208201111561081e57600080fd5b803590602001918460018302840111600160201b8311171561083f57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ecb945050505050565b60006001600160a01b0383166108c75760405162461bcd60e51b815260040180806020018281038252602b815260200180611a2b602b913960400191505060405180910390fd5b5060009081526001602090815260408083206001600160a01b03949094168352929052205490565b6001600160e01b03191660009081526020819052604090205460ff1690565b60038054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561099a5780601f1061096f5761010080835404028352916020019161099a565b820191906000526020600020905b81548152906001019060200180831161097d57829003601f168201915b50505050509050919050565b6109b284848484611096565b50505050565b81518351146109f85760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b6001600160a01b038416610a3d5760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610a456112eb565b6001600160a01b0316856001600160a01b03161480610a705750610a7085610a6b6112eb565b610e9d565b610aab5760405162461bcd60e51b8152600401808060200182810382526032815260200180611aa46032913960400191505060405180910390fd5b6000610ab56112eb565b9050610ac5818787878787610cae565b60005b8451811015610bc6576000858281518110610adf57fe5b602002602001015190506000858381518110610af757fe5b60200260200101519050610b64816040518060600160405280602a8152602001611ad6602a91396001600086815260200190815260200160002060008d6001600160a01b03166001600160a01b03168152602001908152602001600020546112f09092919063ffffffff16565b60008381526001602090815260408083206001600160a01b038e811685529252808320939093558a1681522054610b9b9082611387565b60009283526001602081815260408086206001600160a01b038d168752909152909320555001610ac8565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015610c4c578181015183820152602001610c34565b50505050905001838103825284818151815260200191508051906020019060200280838360005b83811015610c8b578181015183820152602001610c73565b5050505090500194505050505060405180910390a4610cae8187878787876113e8565b505050505050565b60608151835114610cf85760405162461bcd60e51b8152600401808060200182810382526029815260200180611b296029913960400191505060405180910390fd5b6060835167ffffffffffffffff81118015610d1257600080fd5b50604051908082528060200260200182016040528015610d3c578160200160208202803683370190505b50905060005b8451811015610d9a57610d7b858281518110610d5a57fe5b6020026020010151858381518110610d6e57fe5b6020026020010151610880565b828281518110610d8757fe5b6020908102919091010152600101610d42565b509392505050565b6109b284848484611667565b816001600160a01b0316610dc06112eb565b6001600160a01b03161415610e065760405162461bcd60e51b8152600401808060200182810382526029815260200180611b006029913960400191505060405180910390fd5b8060026000610e136112eb565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff191692151592909217909155610e576112eb565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205460ff1690565b6001600160a01b038416610f105760405162461bcd60e51b8152600401808060200182810382526025815260200180611a7f6025913960400191505060405180910390fd5b610f186112eb565b6001600160a01b0316856001600160a01b03161480610f3e5750610f3e85610a6b6112eb565b610f795760405162461bcd60e51b8152600401808060200182810382526029815260200180611a566029913960400191505060405180910390fd5b6000610f836112eb565b9050610fa3818787610f9488611768565b610f9d88611768565b87610cae565b610fea836040518060600160405280602a8152602001611ad6602a913960008781526001602090815260408083206001600160a01b038d16845290915290205491906112f0565b60008581526001602090815260408083206001600160a01b038b811685529252808320939093558716815220546110219084611387565b60008581526001602090815260408083206001600160a01b03808b168086529184529382902094909455805188815291820187905280518a8416938616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a4610cae8187878787876117ac565b6001600160a01b0384166110db5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b815183511461111b5760405162461bcd60e51b8152600401808060200182810382526028815260200180611b526028913960400191505060405180910390fd5b60006111256112eb565b905061113681600087878787610cae565b60005b84518110156111fa576111b16001600087848151811061115557fe5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061119b57fe5b602002602001015161138790919063ffffffff16565b600160008784815181106111c157fe5b602090810291909101810151825281810192909252604090810160009081206001600160a01b038b168252909252902055600101611139565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b83811015611281578181015183820152602001611269565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156112c05781810151838201526020016112a8565b5050505090500194505050505060405180910390a46112e4816000878787876113e8565b5050505050565b335b90565b6000818484111561137f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561134457818101518382015260200161132c565b50505050905090810190601f1680156113715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000828201838110156113e1576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6113fa846001600160a01b031661191d565b15610cae57836001600160a01b031663bc197c8187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b03168152602001806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015611488578181015183820152602001611470565b50505050905001848103835286818151815260200191508051906020019060200280838360005b838110156114c75781810151838201526020016114af565b50505050905001848103825285818151815260200191508051906020019080838360005b838110156115035781810151838201526020016114eb565b50505050905090810190601f1680156115305780820380516001836020036101000a031916815260200191505b5098505050505050505050602060405180830381600087803b15801561155557600080fd5b505af192505050801561157a57506040513d602081101561157557600080fd5b505160015b61160f57611586611929565b8061159157506115d8565b60405162461bcd60e51b815260206004820181815283516024840152835184939192839260440191908501908083836000831561134457818101518382015260200161132c565b60405162461bcd60e51b81526004018080602001828103825260348152602001806119cf6034913960400191505060405180910390fd5b6001600160e01b0319811663bc197c8160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b50505050505050565b6001600160a01b0384166116ac5760405162461bcd60e51b8152600401808060200182810382526021815260200180611b7a6021913960400191505060405180910390fd5b60006116b66112eb565b90506116c881600087610f9488611768565b60008481526001602090815260408083206001600160a01b03891684529091529020546116f59084611387565b60008581526001602090815260408083206001600160a01b03808b16808652918452828520959095558151898152928301889052815190948616927fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f6292908290030190a46112e4816000878787876117ac565b60408051600180825281830190925260609182919060208083019080368337019050509050828160008151811061179b57fe5b602090810291909101015292915050565b6117be846001600160a01b031661191d565b15610cae57836001600160a01b031663f23a6e6187878686866040518663ffffffff1660e01b815260040180866001600160a01b03168152602001856001600160a01b0316815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561184d578181015183820152602001611835565b50505050905090810190601f16801561187a5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b15801561189d57600080fd5b505af19250505080156118c257506040513d60208110156118bd57600080fd5b505160015b6118ce57611586611929565b6001600160e01b0319811663f23a6e6160e01b1461165e5760405162461bcd60e51b8152600401808060200182810382526028815260200180611a036028913960400191505060405180910390fd5b3b151590565b60e01c90565b600060443d1015611939576112ed565b600481823e6308c379a061194d8251611923565b14611957576112ed565b6040513d600319016004823e80513d67ffffffffffffffff816024840111818411171561198757505050506112ed565b828401925082519150808211156119a157505050506112ed565b503d830160208284010111156119b9575050506112ed565b601f01601f191681016020016040529150509056fe455243313135353a207472616e7366657220746f206e6f6e2045524331313535526563656976657220696d706c656d656e746572455243313135353a204552433131353552656365697665722072656a656374656420746f6b656e73455243313135353a2062616c616e636520717565727920666f7220746865207a65726f2061646472657373455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a207472616e7366657220746f20746865207a65726f2061646472657373455243313135353a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564455243313135353a20696e73756666696369656e742062616c616e636520666f72207472616e73666572455243313135353a2073657474696e6720617070726f76616c2073746174757320666f722073656c66455243313135353a206163636f756e747320616e6420696473206c656e677468206d69736d61746368455243313135353a2069647320616e6420616d6f756e7473206c656e677468206d69736d61746368455243313135353a206d696e7420746f20746865207a65726f2061646472657373a2646970667358221220f4b453b2c3187a713b45299ad9f641ddd1cb606ec1c4a9781dc891c1e7bb6a7664736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.dbg.json new file mode 100644 index 0000000..7342b2d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/0dd04f69c7ba76001cb35213866bc8f5.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.json new file mode 100644 index 0000000..e390f75 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/TestNFT721.sol/TestNFT721.json @@ -0,0 +1,410 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "TestNFT721", + "sourceName": "contracts/test/TestNFT721.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "_data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes4", + "name": "interfaceId", + "type": "bytes4" + } + ], + "name": "supportsInterface", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenURI", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60806040523480156200001157600080fd5b50604080518082018252600a815269546573744e465437323160b01b602080830191909152825180840190935260068352654e465437323160d01b9083015290620000636301ffc9a760e01b620000cd565b81516200007890600690602085019062000152565b5080516200008e90600790602084019062000152565b50620000a16380ac58cd60e01b620000cd565b620000b3635b5e139f60e01b620000cd565b620000c563780e9d6360e01b620000cd565b5050620001ee565b6001600160e01b031980821614156200012d576040805162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015290519081900360640190fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200019557805160ff1916838001178555620001c5565b82800160010185558215620001c5579182015b82811115620001c5578251825591602001919060010190620001a8565b50620001d3929150620001d7565b5090565b5b80821115620001d35760008155600101620001d8565b61199380620001fe6000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220eff40ea84425c10107b69bfd956c2b81ab26716f08d5aa488d2e4c164dd7b30764736f6c634300060c0033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061010b5760003560e01c80634f6ccce7116100a257806395d89b411161007157806395d89b4114610349578063a22cb46514610351578063b88d4fde1461037f578063c87b56dd14610445578063e985e9c5146104625761010b565b80634f6ccce7146102e15780636352211e146102fe5780636c0360eb1461031b57806370a08231146103235761010b565b806318160ddd116100de57806318160ddd1461022f57806323b872dd146102495780632f745c591461027f57806342842e0e146102ab5761010b565b806301ffc9a71461011057806306fdde031461014b578063081812fc146101c8578063095ea7b314610201575b600080fd5b6101376004803603602081101561012657600080fd5b50356001600160e01b031916610490565b604080519115158252519081900360200190f35b6101536104b3565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561018d578181015183820152602001610175565b50505050905090810190601f1680156101ba5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101e5600480360360208110156101de57600080fd5b5035610549565b604080516001600160a01b039092168252519081900360200190f35b61022d6004803603604081101561021757600080fd5b506001600160a01b0381351690602001356105ab565b005b610237610686565b60408051918252519081900360200190f35b61022d6004803603606081101561025f57600080fd5b506001600160a01b03813581169160208101359091169060400135610697565b6102376004803603604081101561029557600080fd5b506001600160a01b0381351690602001356106ee565b61022d600480360360608110156102c157600080fd5b506001600160a01b03813581169160208101359091169060400135610719565b610237600480360360208110156102f757600080fd5b5035610734565b6101e56004803603602081101561031457600080fd5b503561074a565b610153610772565b6102376004803603602081101561033957600080fd5b50356001600160a01b03166107d3565b61015361083b565b61022d6004803603604081101561036757600080fd5b506001600160a01b038135169060200135151561089c565b61022d6004803603608081101561039557600080fd5b6001600160a01b038235811692602081013590911691604082013591908101906080810160608201356401000000008111156103d057600080fd5b8201836020820111156103e257600080fd5b8035906020019184600183028401116401000000008311171561040457600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506109a1945050505050565b6101536004803603602081101561045b57600080fd5b50356109ff565b6101376004803603604081101561047857600080fd5b506001600160a01b0381358116916020013516610c82565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60068054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b820191906000526020600020905b81548152906001019060200180831161052257829003601f168201915b5050505050905090565b600061055482610cb0565b61058f5760405162461bcd60e51b815260040180806020018281038252602c815260200180611888602c913960400191505060405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006105b68261074a565b9050806001600160a01b0316836001600160a01b031614156106095760405162461bcd60e51b815260040180806020018281038252602181526020018061190c6021913960400191505060405180910390fd5b806001600160a01b031661061b610cbd565b6001600160a01b0316148061063c575061063c81610637610cbd565b610c82565b6106775760405162461bcd60e51b81526004018080602001828103825260388152602001806117db6038913960400191505060405180910390fd5b6106818383610cc1565b505050565b60006106926002610d2f565b905090565b6106a86106a2610cbd565b82610d3a565b6106e35760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b610681838383610dde565b6001600160a01b03821660009081526001602052604081206107109083610f2a565b90505b92915050565b610681838383604051806020016040528060008152506109a1565b600080610742600284610f36565b509392505050565b60006107138260405180606001604052806029815260200161183d6029913960029190610f52565b60098054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b60006001600160a01b03821661081a5760405162461bcd60e51b815260040180806020018281038252602a815260200180611813602a913960400191505060405180910390fd5b6001600160a01b038216600090815260016020526040902061071390610d2f565b60078054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561053f5780601f106105145761010080835404028352916020019161053f565b6108a4610cbd565b6001600160a01b0316826001600160a01b0316141561090a576040805162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015290519081900360640190fd5b8060056000610917610cbd565b6001600160a01b03908116825260208083019390935260409182016000908120918716808252919093529120805460ff19169215159290921790915561095b610cbd565b6001600160a01b03167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405180821515815260200191505060405180910390a35050565b6109b26109ac610cbd565b83610d3a565b6109ed5760405162461bcd60e51b815260040180806020018281038252603181526020018061192d6031913960400191505060405180910390fd5b6109f984848484610f69565b50505050565b6060610a0a82610cb0565b610a455760405162461bcd60e51b815260040180806020018281038252602f8152602001806118dd602f913960400191505060405180910390fd5b60008281526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610ada5780601f10610aaf57610100808354040283529160200191610ada565b820191906000526020600020905b815481529060010190602001808311610abd57829003601f168201915b505050505090506060610aeb610772565b9050805160001415610aff575090506104ae565b815115610bc05780826040516020018083805190602001908083835b60208310610b3a5780518252601f199092019160209182019101610b1b565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610b825780518252601f199092019160209182019101610b63565b6001836020036101000a03801982511681845116808217855250505050505090500192505050604051602081830303815290604052925050506104ae565b80610bca85610fbb565b6040516020018083805190602001908083835b60208310610bfc5780518252601f199092019160209182019101610bdd565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310610c445780518252601f199092019160209182019101610c25565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405292505050919050565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b6000610713600283611096565b3390565b600081815260046020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610cf68261074a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000610713826110a2565b6000610d4582610cb0565b610d805760405162461bcd60e51b815260040180806020018281038252602c8152602001806117af602c913960400191505060405180910390fd5b6000610d8b8361074a565b9050806001600160a01b0316846001600160a01b03161480610dc65750836001600160a01b0316610dbb84610549565b6001600160a01b0316145b80610dd65750610dd68185610c82565b949350505050565b826001600160a01b0316610df18261074a565b6001600160a01b031614610e365760405162461bcd60e51b81526004018080602001828103825260298152602001806118b46029913960400191505060405180910390fd5b6001600160a01b038216610e7b5760405162461bcd60e51b815260040180806020018281038252602481526020018061178b6024913960400191505060405180910390fd5b610e86838383610681565b610e91600082610cc1565b6001600160a01b0383166000908152600160205260409020610eb390826110a6565b506001600160a01b0382166000908152600160205260409020610ed690826110b2565b50610ee3600282846110be565b5080826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4505050565b600061071083836110d4565b6000808080610f458686611138565b9097909650945050505050565b6000610f5f8484846111b3565b90505b9392505050565b610f74848484610dde565b610f808484848461127d565b6109f95760405162461bcd60e51b81526004018080602001828103825260328152602001806117596032913960400191505060405180910390fd5b606081610fe057506040805180820190915260018152600360fc1b60208201526104ae565b8160005b8115610ff857600101600a82049150610fe4565b60608167ffffffffffffffff8111801561101157600080fd5b506040519080825280601f01601f19166020018201604052801561103c576020820181803683370190505b50859350905060001982015b831561108d57600a840660300160f81b8282806001900393508151811061106b57fe5b60200101906001600160f81b031916908160001a905350600a84049350611048565b50949350505050565b600061071083836113e5565b5490565b600061071083836113fd565b600061071083836114c3565b6000610f5f84846001600160a01b03851661150d565b815460009082106111165760405162461bcd60e51b81526004018080602001828103825260228152602001806117376022913960400191505060405180910390fd5b82600001828154811061112557fe5b9060005260206000200154905092915050565b81546000908190831061117c5760405162461bcd60e51b81526004018080602001828103825260228152602001806118666022913960400191505060405180910390fd5b600084600001848154811061118d57fe5b906000526020600020906002020190508060000154816001015492509250509250929050565b6000828152600184016020526040812054828161124e5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156112135781810151838201526020016111fb565b50505050905090810190601f1680156112405780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5084600001600182038154811061126157fe5b9060005260206000209060020201600101549150509392505050565b6000611291846001600160a01b03166115a4565b61129d57506001610dd6565b60606113ab630a85bd0160e11b6112b2610cbd565b88878760405160240180856001600160a01b03168152602001846001600160a01b0316815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611319578181015183820152602001611301565b50505050905090810190601f1680156113465780820380516001836020036101000a031916815260200191505b5095505050505050604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b038381831617835250505050604051806060016040528060328152602001611759603291396001600160a01b03881691906115aa565b905060008180602001905160208110156113c457600080fd5b50516001600160e01b031916630a85bd0160e11b1492505050949350505050565b60009081526001919091016020526040902054151590565b600081815260018301602052604081205480156114b9578354600019808301919081019060009087908390811061143057fe5b906000526020600020015490508087600001848154811061144d57fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908061147d57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610713565b6000915050610713565b60006114cf83836113e5565b61150557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610713565b506000610713565b600082815260018401602052604081205480611572575050604080518082018252838152602080820184815286546001818101895560008981528481209551600290930290950191825591519082015586548684528188019092529290912055610f62565b8285600001600183038154811061158557fe5b9060005260206000209060020201600101819055506000915050610f62565b3b151590565b6060610f5f8484600085856115be856115a4565b61160f576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b6020831061164e5780518252601f19909201916020918201910161162f565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146116b0576040519150601f19603f3d011682016040523d82523d6000602084013e6116b5565b606091505b50915091506116c58282866116d0565b979650505050505050565b606083156116df575081610f62565b8251156116ef5782518084602001fd5b60405162461bcd60e51b81526020600482018181528451602484015284518593919283926044019190850190808383600083156112135781810151838201526020016111fb56fe456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734552433732313a207472616e7366657220746f206e6f6e20455243373231526563656976657220696d706c656d656e7465724552433732313a207472616e7366657220746f20746865207a65726f20616464726573734552433732313a206f70657261746f7220717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f76656420666f7220616c6c4552433732313a2062616c616e636520717565727920666f7220746865207a65726f20616464726573734552433732313a206f776e657220717565727920666f72206e6f6e6578697374656e7420746f6b656e456e756d657261626c654d61703a20696e646578206f7574206f6620626f756e64734552433732313a20617070726f76656420717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a207472616e73666572206f6620746f6b656e2074686174206973206e6f74206f776e4552433732314d657461646174613a2055524920717565727920666f72206e6f6e6578697374656e7420746f6b656e4552433732313a20617070726f76616c20746f2063757272656e74206f776e65724552433732313a207472616e736665722063616c6c6572206973206e6f74206f776e6572206e6f7220617070726f766564a2646970667358221220eff40ea84425c10107b69bfd956c2b81ab26716f08d5aa488d2e4c164dd7b30764736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.dbg.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.dbg.json new file mode 100644 index 0000000..4cbd82e --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.dbg.json @@ -0,0 +1,4 @@ +{ + "_format": "hh-sol-dbg-1", + "buildInfo": "../../../build-info/90d96dae6a1ddcdbb3ac104035e2e01f.json" +} diff --git a/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.json b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.json new file mode 100644 index 0000000..0c0554a --- /dev/null +++ b/projects/Team-7-DeDrops/contract/artifacts/contracts/test/WETH9.sol/WETH9.json @@ -0,0 +1,291 @@ +{ + "_format": "hh-sol-artifact-1", + "contractName": "WETH9", + "sourceName": "contracts/test/WETH9.sol", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Deposit", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "Withdrawal", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + }, + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "guy", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "deposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [ + { + "internalType": "string", + "name": "", + "type": "string" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "src", + "type": "address" + }, + { + "internalType": "address", + "name": "dst", + "type": "address" + }, + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "wad", + "type": "uint256" + } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x60c0604052600b60808190526a0aee4c2e0e0cac8408aa8960ab1b60a090815261002c9160009190610078565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005891600191610078565b506002805460ff1916601217905534801561007257600080fd5b5061010b565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100b957805160ff19168380011785556100e6565b828001600101855582156100e6579182015b828111156100e65782518255916020019190600101906100cb565b506100f29291506100f6565b5090565b5b808211156100f257600081556001016100f7565b61074f8061011a6000396000f3fe60806040526004361061009c5760003560e01c8063313ce56711610064578063313ce5671461020e57806370a082311461023957806395d89b411461026c578063a9059cbb14610281578063d0e30db0146102ba578063dd62ed3e146102c25761009c565b806306fdde03146100a1578063095ea7b31461012b57806318160ddd1461017857806323b872dd1461019f5780632e1a7d4d146101e2575b600080fd5b3480156100ad57600080fd5b506100b66102fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013757600080fd5b506101646004803603604081101561014e57600080fd5b506001600160a01b03813516906020013561038b565b604080519115158252519081900360200190f35b34801561018457600080fd5b5061018d6103f1565b60408051918252519081900360200190f35b3480156101ab57600080fd5b50610164600480360360608110156101c257600080fd5b506001600160a01b038135811691602081013590911690604001356103f5565b3480156101ee57600080fd5b5061020c6004803603602081101561020557600080fd5b503561056d565b005b34801561021a57600080fd5b50610223610624565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b5061018d6004803603602081101561025c57600080fd5b50356001600160a01b031661062d565b34801561027857600080fd5b506100b661063f565b34801561028d57600080fd5b50610164600480360360408110156102a457600080fd5b506001600160a01b038135169060200135610699565b61020c6106ad565b3480156102ce57600080fd5b5061018d600480360360408110156102e557600080fd5b506001600160a01b03813581169160200135166106fc565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561043c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038416331480159061047a57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b156104fc576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104d1576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105ea573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b60006106a63384846103f5565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220231913a8879316363f5ae32f11973222dd17a664693621229f5f9f370e563c4c64736f6c634300060c0033", + "deployedBytecode": "0x60806040526004361061009c5760003560e01c8063313ce56711610064578063313ce5671461020e57806370a082311461023957806395d89b411461026c578063a9059cbb14610281578063d0e30db0146102ba578063dd62ed3e146102c25761009c565b806306fdde03146100a1578063095ea7b31461012b57806318160ddd1461017857806323b872dd1461019f5780632e1a7d4d146101e2575b600080fd5b3480156100ad57600080fd5b506100b66102fd565b6040805160208082528351818301528351919283929083019185019080838360005b838110156100f05781810151838201526020016100d8565b50505050905090810190601f16801561011d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561013757600080fd5b506101646004803603604081101561014e57600080fd5b506001600160a01b03813516906020013561038b565b604080519115158252519081900360200190f35b34801561018457600080fd5b5061018d6103f1565b60408051918252519081900360200190f35b3480156101ab57600080fd5b50610164600480360360608110156101c257600080fd5b506001600160a01b038135811691602081013590911690604001356103f5565b3480156101ee57600080fd5b5061020c6004803603602081101561020557600080fd5b503561056d565b005b34801561021a57600080fd5b50610223610624565b6040805160ff9092168252519081900360200190f35b34801561024557600080fd5b5061018d6004803603602081101561025c57600080fd5b50356001600160a01b031661062d565b34801561027857600080fd5b506100b661063f565b34801561028d57600080fd5b50610164600480360360408110156102a457600080fd5b506001600160a01b038135169060200135610699565b61020c6106ad565b3480156102ce57600080fd5b5061018d600480360360408110156102e557600080fd5b506001600160a01b03813581169160200135166106fc565b6000805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b820191906000526020600020905b81548152906001019060200180831161036657829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b6001600160a01b03831660009081526003602052604081205482111561043c576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b038416331480159061047a57506001600160a01b038416600090815260046020908152604080832033845290915290205460001914155b156104fc576001600160a01b03841660009081526004602090815260408083203384529091529020548211156104d1576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b6001600160a01b03841660009081526004602090815260408083203384529091529020805483900390555b6001600160a01b03808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156105ab576040805162461bcd60e51b8152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f193505050501580156105ea573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156103835780601f1061035857610100808354040283529160200191610383565b60006106a63384846103f5565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220231913a8879316363f5ae32f11973222dd17a664693621229f5f9f370e563c4c64736f6c634300060c0033", + "linkReferences": {}, + "deployedLinkReferences": {} +} diff --git a/projects/Team-7-DeDrops/contract/contracts/Bank1155.sol b/projects/Team-7-DeDrops/contract/contracts/Bank1155.sol new file mode 100644 index 0000000..3445ad0 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/Bank1155.sol @@ -0,0 +1,153 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.12; + +import '@openzeppelin/contracts/token/ERC1155/IERC1155.sol'; +import '@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol'; + + +contract Bank1155 is ERC1155Receiver { + + bytes32 public DOMAIN_SEPARATOR; + bytes32 public CLAIM_TYPEHASH; + bytes32 public PASSWORD_TYPEHASH; + mapping(bytes32 => bool) public nonces; + mapping(address => mapping(uint => mapping(address => uint))) public tokenUserBalance; + + event Deposit(address indexed token, uint indexed id, address indexed to, uint value); + event Withdraw(address indexed token, uint indexed id, address indexed to, uint value); + event Claim(address indexed token, uint indexed id, address indexed from, address to); + event Password(address indexed token, uint indexed id, address indexed from, address to); + + + constructor() public { + uint chainId; + assembly { + chainId := chainid() + } + DOMAIN_SEPARATOR = keccak256( + abi.encode( + keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), + keccak256(bytes('Bank1155')), + keccak256(bytes('1')), + chainId, + address(this) + ) + ); + + CLAIM_TYPEHASH = keccak256('Claim(address token,uint256 id,address owner,address spender,uint256 nonce,uint256 deadline)'); + PASSWORD_TYPEHASH = keccak256('Password(address token,address owner,string psw,uint256 nonce,uint256 deadline)'); + } + + + function deposit(address token, uint id, address owner, uint value) public { + IERC1155(token).safeTransferFrom(msg.sender, address(this), id, value, ''); + tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] + value; + + emit Deposit(token, id, owner, value); + } + + + function withdraw(address token, uint id, address spender, uint value) public { + require(tokenUserBalance[token][id][msg.sender] >= value, 'Bank1155::withdraw: oh no'); + tokenUserBalance[token][id][msg.sender] = tokenUserBalance[token][id][msg.sender] - value; + IERC1155(token).safeTransferFrom(address(this), spender, id, value, ''); + + emit Withdraw(token, id, spender, value); + } + + + /** + @dev Handles the receipt of a single ERC1155 token type. This function is + called at the end of a `safeTransferFrom` after the balance has been updated. + To accept the transfer, this must return + `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` + (i.e. 0xf23a6e61, or its own function selector). + @param operator The address which initiated the transfer (i.e. msg.sender) + @param from The address which previously owned the token + @param id The ID of the token being transferred + @param value The amount of tokens being transferred + @param data Additional data with no specified format + @return `bytes4(keccak256("onERC1155Received(address,address,uint256,uint256,bytes)"))` if transfer is allowed + */ + function onERC1155Received(address operator, address from, uint256 id, uint256 value, bytes calldata data) external override returns(bytes4) { + address owner = (data.length == 0) ? from : bytesToAddress(data); + tokenUserBalance[msg.sender][id][owner] = tokenUserBalance[msg.sender][id][owner] + value; + emit Deposit(msg.sender, id, owner, value); + + return this.onERC1155Received.selector; + } + + + /** + @dev Handles the receipt of a multiple ERC1155 token types. This function + is called at the end of a `safeBatchTransferFrom` after the balances have + been updated. To accept the transfer(s), this must return + `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` + (i.e. 0xbc197c81, or its own function selector). + @param operator The address which initiated the batch transfer (i.e. msg.sender) + @param from The address which previously owned the token + @param ids An array containing ids of each token being transferred (order and length must match values array) + @param values An array containing amounts of each token being transferred (order and length must match ids array) + @param data Additional data with no specified format + @return `bytes4(keccak256("onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)"))` if transfer is allowed + */ + function onERC1155BatchReceived(address operator, address from, uint256[] calldata ids, uint256[] calldata values, bytes calldata data) external override returns(bytes4) { + address owner = (data.length == 0) ? from : bytesToAddress(data); + for (uint i = 0; i < ids.length; i++) { + uint id = ids[i]; + uint value = values[i]; + tokenUserBalance[msg.sender][id][owner] = tokenUserBalance[msg.sender][id][owner] + value; + emit Deposit(msg.sender, id, owner, value); + } + return this.onERC1155BatchReceived.selector; + } + + + function claim(address token, uint id, address owner, address spender, uint deadline, uint8 v, bytes32 r, bytes32 s) external { + require(deadline >= block.timestamp, 'Bank1155::claim: expired deadline'); + bytes32 digest = keccak256( + abi.encodePacked( + '\x19\x01', + DOMAIN_SEPARATOR, + keccak256(abi.encode(CLAIM_TYPEHASH, token, id, owner, spender, deadline)) + ) + ); + require(!nonces[digest], 'Bank1155::claim: expired digest'); + address recoveredAddress = ecrecover(digest, v, r, s); + require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank1155::claim: invalid signature'); + + require(tokenUserBalance[token][id][owner] >= 1, 'Bank1155::claim: oh no'); + tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] - 1; + IERC1155(token).safeTransferFrom(address(this), spender, id, 1, ''); + + emit Claim(token, id, owner, spender); + } + + + function password(address token, uint id, address owner, string memory psw, uint deadline, uint8 v, bytes32 r, bytes32 s) external { + require(deadline >= block.timestamp, 'Bank1155::password: expired deadline'); + bytes32 digest = keccak256( + abi.encodePacked( + '\x19\x01', + DOMAIN_SEPARATOR, + keccak256(abi.encode(PASSWORD_TYPEHASH, token, id, owner, psw, deadline)) + ) + ); + require(!nonces[digest], 'Bank1155::password: expired digest'); + address recoveredAddress = ecrecover(digest, v, r, s); + require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank1155::password: invalid signature'); + + require(tokenUserBalance[token][id][owner] >= 1, 'Bank1155::claim: oh no'); + tokenUserBalance[token][id][owner] = tokenUserBalance[token][id][owner] - 1; + IERC1155(token).safeTransferFrom(address(this), msg.sender, id, 1, ''); + + emit Password(token, id, owner, msg.sender); + } + + + function bytesToAddress(bytes memory bys) internal pure returns (address addr) { + assembly { + addr := mload(add(bys,20)) + } + } +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/Bank20.sol b/projects/Team-7-DeDrops/contract/contracts/Bank20.sol new file mode 100644 index 0000000..c47f495 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/Bank20.sol @@ -0,0 +1,96 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.12; + +import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; + + +contract Bank20 { + + bytes32 public DOMAIN_SEPARATOR; + bytes32 public CLAIM_TYPEHASH; + bytes32 public PASSWORD_TYPEHASH; + mapping(bytes32 => bool) public nonces; + mapping(address => mapping(address => uint)) public tokenUserBalance; + + event Deposit(address indexed token, address indexed to, uint value); + event Withdraw(address indexed token, address indexed to, uint value); + event Claim(address indexed token, address indexed from, address indexed to, uint value); + event Password(address indexed token, address indexed from, address indexed to, uint value); + + + constructor() public { + uint chainId; + assembly { + chainId := chainid() + } + DOMAIN_SEPARATOR = keccak256( + abi.encode( + keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), + keccak256(bytes('Bank20')), + keccak256(bytes('1')), + chainId, + address(this) + ) + ); + + CLAIM_TYPEHASH = keccak256('Claim(address token,address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)'); + PASSWORD_TYPEHASH = keccak256('Password(address token,address owner,string psw,uint256 value,uint256 nonce,uint256 deadline)'); + } + + function deposit(address token, address owner, uint value) public { + IERC20(token).transferFrom(msg.sender, address(this), value); + tokenUserBalance[token][owner] = tokenUserBalance[token][owner] + value; + + emit Deposit(token, owner, value); + } + + function withdraw(address token, address spender, uint value) public { + require(tokenUserBalance[token][msg.sender] >= value, 'Bank20::withdraw: oh no'); + tokenUserBalance[token][msg.sender] = tokenUserBalance[token][msg.sender] - value; + IERC20(token).transfer(spender, value); + + emit Withdraw(token, spender, value); + } + + function claim(address token, address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { + require(deadline >= block.timestamp, 'Bank20::claim: expired deadline'); + bytes32 digest = keccak256( + abi.encodePacked( + '\x19\x01', + DOMAIN_SEPARATOR, + keccak256(abi.encode(CLAIM_TYPEHASH, token, owner, spender, value, deadline)) + ) + ); + require(!nonces[digest], 'Bank20::claim: expired digest'); + address recoveredAddress = ecrecover(digest, v, r, s); + require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank20::claim: invalid signature'); + + require(tokenUserBalance[token][owner] >= value, 'Bank20::claim: oh no'); + tokenUserBalance[token][owner] = tokenUserBalance[token][owner] - value; + IERC20(token).transfer(spender, value); + nonces[digest] = true; + + emit Claim(token, owner, spender, value); + } + + function password(address token, address owner, string memory psw, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { + require(deadline >= block.timestamp, 'Bank20::password: expired deadline'); + bytes32 digest = keccak256( + abi.encodePacked( + '\x19\x01', + DOMAIN_SEPARATOR, + keccak256(abi.encode(PASSWORD_TYPEHASH, token, owner, psw, value, deadline)) + ) + ); + require(!nonces[digest], 'Bank20::password: expired digest'); + address recoveredAddress = ecrecover(digest, v, r, s); + require(recoveredAddress != address(0) && recoveredAddress == owner, 'Bank20::password: invalid signature'); + + require(tokenUserBalance[token][owner] >= value, 'Bank20::password: oh no'); + tokenUserBalance[token][owner] = tokenUserBalance[token][owner] - value; + IERC20(token).transfer(msg.sender, value); + nonces[digest] = true; + + emit Password(token, owner, msg.sender, value); + } +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/DeDropsERC.sol b/projects/Team-7-DeDrops/contract/contracts/DeDropsERC.sol new file mode 100644 index 0000000..ddbcded --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/DeDropsERC.sol @@ -0,0 +1,43 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.0 <0.8.0; + +import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; +import '@openzeppelin/contracts/access/Ownable.sol'; +import './Bank20.sol'; + +// import 'hardhat/console.sol'; + +contract DeDropsERC is Ownable { + + uint256 public length = 0; + Bank20 public bank; + + event Drop(uint256 indexed id, address indexed token, uint256 amount, string info, string info2); + + struct Item { + uint256 id; + address token; + uint256 amount; + string info; + string info2; + } + + mapping (uint256 => Item) public idToItem; + + + constructor(address bankAddress) public { + bank = Bank20(bankAddress); + } + + + function drop(address token, uint256 amount, string calldata info, string calldata info2) external { + uint256 id = ++length; + idToItem[id] = Item(id, token, amount, info, info2); + + IERC20(token).transferFrom(msg.sender, address(this), amount); + IERC20(token).approve(address(bank), amount); + bank.deposit(token, owner(), amount); + + emit Drop(id, token, amount, info, info2); + } +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/DeDropsNFT.sol b/projects/Team-7-DeDrops/contract/contracts/DeDropsNFT.sol new file mode 100644 index 0000000..56d1e0c --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/DeDropsNFT.sol @@ -0,0 +1,52 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.0 <0.8.0; + +import '@openzeppelin/contracts/token/ERC1155/ERC1155.sol'; +import '@openzeppelin/contracts/access/Ownable.sol'; +import '@openzeppelin/contracts/token/ERC1155/ERC1155Receiver.sol'; +import './Bank1155.sol'; + +// import 'hardhat/console.sol'; + +contract DeDropsNFT is ERC1155('dedrops.xyz'), Ownable { + + uint256 public length = 0; + Bank1155 public bank; + + event Drop(uint256 indexed id, uint256 amount, string info, string info2); + + struct Item { + uint256 id; + uint256 amount; + string info; + string info2; + } + + mapping (uint256 => Item) public idToItem; + + + constructor(address bankAddress) public { + bank = Bank1155(bankAddress); + } + + + function mint(uint256 amount, string calldata info, string calldata info2) external { + uint256 id = ++length; + idToItem[id] = Item(id, amount, info, info2); + + _mint(msg.sender, id, amount, ''); + safeTransferFrom(msg.sender, address(bank), id, amount, addressToBytes(owner())); + + emit Drop(id, amount, info, info2); + } + + + function addressToBytes(address addr) internal pure returns (bytes memory) { + bytes20 addrBytes = bytes20(uint160(addr)); + bytes memory rtn = new bytes(20); + for (uint8 i = 0; i < 20; i++) { + rtn[i] = addrBytes[i]; + } + return rtn; + } +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/interfaces/IERC20.sol b/projects/Team-7-DeDrops/contract/contracts/interfaces/IERC20.sol new file mode 100755 index 0000000..658dd30 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/interfaces/IERC20.sol @@ -0,0 +1,14 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.12; + +interface IERC20 { + function totalSupply() external view returns (uint256); + function balanceOf(address account) external view returns (uint256); + function allowance(address owner, address spender) external view returns (uint256); + function approve(address spender, uint256 amount) external returns (bool); + event Transfer(address indexed from, address indexed to, uint256 value); + event Approval(address indexed owner, address indexed spender, uint256 value); + + // EIP 2612 + function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external; +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/libraries/SafeERC20.sol b/projects/Team-7-DeDrops/contract/contracts/libraries/SafeERC20.sol new file mode 100755 index 0000000..2f550e2 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/libraries/SafeERC20.sol @@ -0,0 +1,31 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.12; + +import "../interfaces/IERC20.sol"; + +library SafeERC20 { + function safeSymbol(IERC20 token) internal view returns(string memory) { + (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x95d89b41)); + return success && data.length > 0 ? abi.decode(data, (string)) : "???"; + } + + function safeName(IERC20 token) internal view returns(string memory) { + (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x06fdde03)); + return success && data.length > 0 ? abi.decode(data, (string)) : "???"; + } + + function safeDecimals(IERC20 token) public view returns (uint8) { + (bool success, bytes memory data) = address(token).staticcall(abi.encodeWithSelector(0x313ce567)); + return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; + } + + function safeTransfer(IERC20 token, address to, uint256 amount) internal { + (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0xa9059cbb, to, amount)); + require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: Transfer failed"); + } + + function safeTransferFrom(IERC20 token, address from, uint256 amount) internal { + (bool success, bytes memory data) = address(token).call(abi.encodeWithSelector(0x23b872dd, from, address(this), amount)); + require(success && (data.length == 0 || abi.decode(data, (bool))), "SafeERC20: TransferFrom failed"); + } +} diff --git a/projects/Team-7-DeDrops/contract/contracts/libraries/SafeMath.sol b/projects/Team-7-DeDrops/contract/contracts/libraries/SafeMath.sol new file mode 100755 index 0000000..51152c1 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/libraries/SafeMath.sol @@ -0,0 +1,17 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.6.12; +// a library for performing overflow-safe math, updated with awesomeness from of DappHub (https://github.com/dapphub/ds-math) +library SafeMath { + function add(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a + b) >= b, "SafeMath: Add Overflow");} + function sub(uint256 a, uint256 b) internal pure returns (uint256 c) {require((c = a - b) <= a, "SafeMath: Underflow");} + function mul(uint256 a, uint256 b) internal pure returns (uint256 c) {require(b == 0 || (c = a * b)/b == a, "SafeMath: Mul Overflow");} + function to128(uint256 a) internal pure returns (uint128 c) { + require(a <= uint128(-1), "SafeMath: uint128 Overflow"); + c = uint128(a); + } +} + +library SafeMath128 { + function add(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a + b) >= b, "SafeMath: Add Overflow");} + function sub(uint128 a, uint128 b) internal pure returns (uint128 c) {require((c = a - b) <= a, "SafeMath: Underflow");} +} diff --git a/projects/Team-7-DeDrops/contract/contracts/test/MockERC20.sol b/projects/Team-7-DeDrops/contract/contracts/test/MockERC20.sol new file mode 100755 index 0000000..755277b --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/test/MockERC20.sol @@ -0,0 +1,97 @@ +// SPDX-License-Identifier: MIT +pragma solidity >=0.6.6; + +import '../libraries/SafeMath.sol'; + +contract MockERC20 { + using SafeMath for uint; + + string public constant name = 'Test Token'; + string public symbol; + uint8 public decimals; + uint public totalSupply; + mapping(address => uint) public balanceOf; + mapping(address => mapping(address => uint)) public allowance; + + bytes32 public DOMAIN_SEPARATOR; + // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)"); + bytes32 public constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9; + mapping(address => uint) public nonces; + + event Approval(address indexed owner, address indexed spender, uint value); + event Transfer(address indexed from, address indexed to, uint value); + + constructor(string memory _symbol, uint _totalSupply, uint8 _decimals) public { + uint chainId; + assembly { + chainId := chainid() + } + DOMAIN_SEPARATOR = keccak256( + abi.encode( + keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'), + keccak256(bytes(name)), + keccak256(bytes('1')), + chainId, + address(this) + ) + ); + symbol = _symbol; + decimals = _decimals; + _mint(msg.sender, _totalSupply); + } + + function _mint(address to, uint value) internal { + totalSupply = totalSupply.add(value); + balanceOf[to] = balanceOf[to].add(value); + emit Transfer(address(0), to, value); + } + + function _burn(address from, uint value) internal { + balanceOf[from] = balanceOf[from].sub(value); + totalSupply = totalSupply.sub(value); + emit Transfer(from, address(0), value); + } + + function _approve(address owner, address spender, uint value) private { + allowance[owner][spender] = value; + emit Approval(owner, spender, value); + } + + function _transfer(address from, address to, uint value) private { + balanceOf[from] = balanceOf[from].sub(value); + balanceOf[to] = balanceOf[to].add(value); + emit Transfer(from, to, value); + } + + function approve(address spender, uint value) external returns (bool) { + _approve(msg.sender, spender, value); + return true; + } + + function transfer(address to, uint value) external returns (bool) { + _transfer(msg.sender, to, value); + return true; + } + + function transferFrom(address from, address to, uint value) external returns (bool) { + if (allowance[from][msg.sender] != uint(-1)) { + allowance[from][msg.sender] = allowance[from][msg.sender].sub(value); + } + _transfer(from, to, value); + return true; + } + + function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external { + require(deadline >= block.timestamp, 'EXPIRED'); + bytes32 digest = keccak256( + abi.encodePacked( + '\x19\x01', + DOMAIN_SEPARATOR, + keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline)) + ) + ); + address recoveredAddress = ecrecover(digest, v, r, s); + require(recoveredAddress != address(0) && recoveredAddress == owner, 'INVALID_SIGNATURE'); + _approve(owner, spender, value); + } +} diff --git a/projects/Team-7-DeDrops/contract/contracts/test/TestNFT1155.sol b/projects/Team-7-DeDrops/contract/contracts/test/TestNFT1155.sol new file mode 100644 index 0000000..7f61183 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/test/TestNFT1155.sol @@ -0,0 +1,19 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.6.0 <0.8.0; + +import '@openzeppelin/contracts/token/ERC1155/ERC1155.sol'; + +contract TestNFT1155 is ERC1155('TestNFT1155') { + + constructor() public { + } + + function mint(address account, uint256 id, uint256 amount, bytes memory data) external { + _mint(account, id, amount, data); + } + + function mintBatch(address to, uint256[] memory ids, uint256[] memory amounts, bytes memory data) external { + _mintBatch(to, ids, amounts, data); + } +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/test/TestNFT721.sol b/projects/Team-7-DeDrops/contract/contracts/test/TestNFT721.sol new file mode 100644 index 0000000..754b950 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/test/TestNFT721.sol @@ -0,0 +1,9 @@ +// SPDX-License-Identifier: MIT + +pragma solidity >=0.6.0 <0.8.0; + +import '@openzeppelin/contracts/token/ERC721/ERC721.sol'; + +contract TestNFT721 is ERC721('TestNFT721', 'NFT721') { + +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/contracts/test/WETH9.sol b/projects/Team-7-DeDrops/contract/contracts/test/WETH9.sol new file mode 100755 index 0000000..349c38a --- /dev/null +++ b/projects/Team-7-DeDrops/contract/contracts/test/WETH9.sol @@ -0,0 +1,756 @@ +// Copyright (C) 2015, 2016, 2017 Dapphub + +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . +// SPDX-License-Identifier: MIT +pragma solidity =0.6.12; + +contract WETH9 { + string public name = "Wrapped ETH"; + string public symbol = "WETH"; + uint8 public decimals = 18; + + event Approval(address indexed src, address indexed guy, uint wad); + event Transfer(address indexed src, address indexed dst, uint wad); + event Deposit(address indexed dst, uint wad); + event Withdrawal(address indexed src, uint wad); + + mapping (address => uint) public balanceOf; + mapping (address => mapping (address => uint)) public allowance; + + // function() public payable { + // deposit(); + // } + function deposit() public payable { + balanceOf[msg.sender] += msg.value; + emit Deposit(msg.sender, msg.value); + } + function withdraw(uint wad) public { + require(balanceOf[msg.sender] >= wad, ""); + balanceOf[msg.sender] -= wad; + msg.sender.transfer(wad); + emit Withdrawal(msg.sender, wad); + } + + function totalSupply() public view returns (uint) { + return address(this).balance; + } + + function approve(address guy, uint wad) public returns (bool) { + allowance[msg.sender][guy] = wad; + emit Approval(msg.sender, guy, wad); + return true; + } + + function transfer(address dst, uint wad) public returns (bool) { + return transferFrom(msg.sender, dst, wad); + } + + function transferFrom(address src, address dst, uint wad) + public + returns (bool) + { + require(balanceOf[src] >= wad, ""); + + if (src != msg.sender && allowance[src][msg.sender] != uint(-1)) { + require(allowance[src][msg.sender] >= wad, ""); + allowance[src][msg.sender] -= wad; + } + + balanceOf[src] -= wad; + balanceOf[dst] += wad; + + emit Transfer(src, dst, wad); + + return true; + } +} + + +/* + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. + +*/ \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/hardhat.config.js b/projects/Team-7-DeDrops/contract/hardhat.config.js new file mode 100644 index 0000000..5f8a7ea --- /dev/null +++ b/projects/Team-7-DeDrops/contract/hardhat.config.js @@ -0,0 +1,107 @@ +require("@nomiclabs/hardhat-waffle"); + +// This is a sample Hardhat task. To learn how to create your own go to +// https://hardhat.org/guides/create-task.html +task("accounts", "Prints the list of accounts", async () => { + const accounts = await ethers.getSigners(); + + for (const account of accounts) { + console.log(account.address); + } +}); + +// You need to export an object to set up your config +// Go to https://hardhat.org/config/ to learn more + +/** + * @type import('hardhat/config').HardhatUserConfig + */ +module.exports = { + defaultNetwork: 'hardhat', + networks: { + hardhat: { + + }, + kovan: { + url: 'https://kovan.infura.io/v3/c7cd730e3f1e4f9a8c702c6cb9d17f3f', + chainId: 42, + from: process.env.ETH_ADDRESS_0, + accounts: [ + process.env.ETH_PK_0, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + }, + okex_testnet: { + url: 'https://exchaintestrpc.okex.org', + chainId: 65, + from: process.env.ETH_ADDRESS_0, + accounts: [ + process.env.ETH_PK_0, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + }, + heco_testnet: { + url: 'https://http-testnet.hecochain.com', + chainId: 256, + from: process.env.ETH_ADDRESS_0, + accounts: [ + process.env.ETH_PK_0, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + }, + bsc_testnet: { + url: 'https://data-seed-prebsc-1-s1.binance.org:8545', + chainId: 97, + from: process.env.ETH_ADDRESS_0, + accounts: [ + process.env.ETH_PK_0, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + }, + bsc_mainnet: { + url: 'https://bsc-dataseed2.binance.org/', + chainId: 56, + from: process.env.ETH_ADDRESS_0, + accounts: [ + process.env.ETH_PK_0, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + }, + matic_mainnet: { + // url: 'https://rpc-mainnet.maticvigil.com/v1/6ca36da1323f40dc42d64ed9ba89da9a6f59c23d', + // url: 'https://rpc-mainnet.matic.network', + url: 'https://matic-mainnet.chainstacklabs.com', + // url: 'https://rpc-mainnet.matic.quiknode.pro', + // url: 'https://matic-mainnet-full-rpc.bwarelabs.com', + // url: 'https://matic-mainnet-archive-rpc.bwarelabs.com', + chainId: 137, + from: process.env.DEDROPS_SERVER, + accounts: [ + process.env.DEDROPS_PK, + process.env.ETH_PK_1, + process.env.ETH_PK_2 + ] + } + }, + // solidity: { + // compilers: [ + // { + // version: "0.6.12", + // } + // ] + // } + solidity: { + version: "0.6.12", + settings: { + optimizer: { + enabled: true, + runs: 200 + } + } + } +}; \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/package-lock.json b/projects/Team-7-DeDrops/contract/package-lock.json new file mode 100644 index 0000000..6a298b4 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/package-lock.json @@ -0,0 +1,27811 @@ +{ + "name": "dedrops-contract", + "version": "1.0.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "dedrops-contract", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@openzeppelin/contracts": "^3.4.0" + }, + "devDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.2", + "@nomiclabs/hardhat-waffle": "^2.0.1", + "chai": "^4.3.4", + "ethereum-waffle": "^3.4.0", + "ethers": "^5.4.2", + "hardhat": "^2.5.0" + } + }, + "node_modules/@ensdomains/ens": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", + "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", + "deprecated": "Please use @ensdomains/ens-contracts", + "dev": true, + "dependencies": { + "bluebird": "^3.5.2", + "eth-ens-namehash": "^2.0.8", + "solc": "^0.4.20", + "testrpc": "0.0.1", + "web3-utils": "^1.0.0-beta.31" + } + }, + "node_modules/@ensdomains/ens/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/@ensdomains/ens/node_modules/get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "node_modules/@ensdomains/ens/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@ensdomains/ens/node_modules/require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "node_modules/@ensdomains/ens/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@ensdomains/ens/node_modules/solc": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", + "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", + "dev": true, + "dependencies": { + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" + }, + "bin": { + "solcjs": "solcjs" + } + }, + "node_modules/@ensdomains/ens/node_modules/string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "node_modules/@ensdomains/ens/node_modules/wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "dependencies": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ensdomains/ens/node_modules/y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "node_modules/@ensdomains/ens/node_modules/yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "dependencies": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "node_modules/@ensdomains/ens/node_modules/yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "dependencies": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + }, + "node_modules/@ensdomains/resolver": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", + "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", + "deprecated": "Please use @ensdomains/ens-contracts", + "dev": true + }, + "node_modules/@ethereum-waffle/chai": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.0.tgz", + "integrity": "sha512-GVaFKuFbFUclMkhHtQTDnWBnBQMJc/pAbfbFj/nnIK237WPLsO3KDDslA7m+MNEyTAOFrcc0CyfruAGGXAQw3g==", + "dev": true, + "dependencies": { + "@ethereum-waffle/provider": "^3.4.0", + "ethers": "^5.0.0" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@ethereum-waffle/compiler": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz", + "integrity": "sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw==", + "dev": true, + "dependencies": { + "@resolver-engine/imports": "^0.3.3", + "@resolver-engine/imports-fs": "^0.3.3", + "@typechain/ethers-v5": "^2.0.0", + "@types/mkdirp": "^0.5.2", + "@types/node-fetch": "^2.5.5", + "ethers": "^5.0.1", + "mkdirp": "^0.5.1", + "node-fetch": "^2.6.1", + "solc": "^0.6.3", + "ts-generator": "^0.1.1", + "typechain": "^3.0.0" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@ethereum-waffle/compiler/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/@ethereum-waffle/compiler/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/@ethereum-waffle/compiler/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/@ethereum-waffle/compiler/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@ethereum-waffle/compiler/node_modules/solc": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", + "integrity": "sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@ethereum-waffle/ens": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.3.0.tgz", + "integrity": "sha512-zVIH/5cQnIEgJPg1aV8+ehYicpcfuAisfrtzYh1pN3UbfeqPylFBeBaIZ7xj/xYzlJjkrek/h9VfULl6EX9Aqw==", + "dev": true, + "dependencies": { + "@ensdomains/ens": "^0.4.4", + "@ensdomains/resolver": "^0.2.4", + "ethers": "^5.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@ethereum-waffle/mock-contract": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.3.0.tgz", + "integrity": "sha512-apwq0d+2nQxaNwsyLkE+BNMBhZ1MKGV28BtI9WjD3QD2Ztdt1q9II4sKA4VrLTUneYSmkYbJZJxw89f+OpJGyw==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.0.1", + "ethers": "^5.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@ethereum-waffle/provider": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.0.tgz", + "integrity": "sha512-QgseGzpwlzmaHXhqfdzthCGu5a6P1SBF955jQHf/rBkK1Y7gGo2ukt3rXgxgfg/O5eHqRU+r8xw5MzVyVaBscQ==", + "dev": true, + "dependencies": { + "@ethereum-waffle/ens": "^3.3.0", + "ethers": "^5.0.1", + "ganache-core": "^2.13.2", + "patch-package": "^6.2.2", + "postinstall-postinstall": "^2.1.0" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/@ethereumjs/block": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.4.0.tgz", + "integrity": "sha512-umKAoTX32yXzErpIksPHodFc/5y8bmZMnOl6hWy5Vd8xId4+HKFUOyEiN16Y97zMwFRysRpcrR6wBejfqc6Bmg==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "ethereumjs-util": "^7.1.0", + "merkle-patricia-tree": "^4.2.0" + } + }, + "node_modules/@ethereumjs/blockchain": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.4.0.tgz", + "integrity": "sha512-wAuKLaew6PL52kH8YPXO7PbjjKV12jivRSyHQehkESw4slSLLfYA6Jv7n5YxyT2ajD7KNMPVh7oyF/MU6HcOvg==", + "dev": true, + "dependencies": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/ethash": "^1.0.0", + "debug": "^2.2.0", + "ethereumjs-util": "^7.1.0", + "level-mem": "^5.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.4", + "semaphore-async-await": "^1.5.1" + } + }, + "node_modules/@ethereumjs/blockchain/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@ethereumjs/blockchain/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/@ethereumjs/common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz", + "integrity": "sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==", + "dev": true, + "dependencies": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.0" + } + }, + "node_modules/@ethereumjs/ethash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.0.0.tgz", + "integrity": "sha512-iIqnGG6NMKesyOxv2YctB2guOVX18qMAWlj3QlZyrc+GqfzLqoihti+cVNQnyNxr7eYuPdqwLQOFuPe6g/uKjw==", + "dev": true, + "dependencies": { + "@types/levelup": "^4.3.0", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.0.7", + "miller-rabin": "^4.0.0" + } + }, + "node_modules/@ethereumjs/tx": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz", + "integrity": "sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==", + "dev": true, + "dependencies": { + "@ethereumjs/common": "^2.4.0", + "ethereumjs-util": "^7.1.0" + } + }, + "node_modules/@ethereumjs/vm": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.5.0.tgz", + "integrity": "sha512-h6Kr6WqKUP8nVuEzCWPWEPrC63v7HFwt3gRuK7CJiyg9S0iWSBKUA/YVD4YgaSVACuxUfWaOBbwV5uGVupm5PQ==", + "dev": true, + "dependencies": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/blockchain": "^5.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "async-eventemitter": "^0.2.4", + "core-js-pure": "^3.0.1", + "debug": "^2.2.0", + "ethereumjs-util": "^7.1.0", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "merkle-patricia-tree": "^4.2.0", + "rustbn.js": "~0.2.0", + "util.promisify": "^1.0.1" + } + }, + "node_modules/@ethereumjs/vm/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/@ethereumjs/vm/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/@ethersproject/abi": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", + "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", + "dev": true, + "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.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", + "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", + "dev": true, + "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.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", + "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", + "dev": true, + "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.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", + "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "dev": true, + "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.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/rlp": "^5.4.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", + "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "dev": true, + "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.4.0" + } + }, + "node_modules/@ethersproject/basex": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", + "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", + "dev": true, + "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.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz", + "integrity": "sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg==", + "dev": true, + "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.4.0", + "@ethersproject/logger": "^5.4.0", + "bn.js": "^4.11.9" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", + "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "dev": true, + "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.4.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", + "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "dev": true, + "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.4.0" + } + }, + "node_modules/@ethersproject/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==", + "dev": true, + "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.4.0", + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", + "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "dev": true, + "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.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@ethersproject/hdnode": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", + "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "dev": true, + "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.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "node_modules/@ethersproject/json-wallets": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", + "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "dev": true, + "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.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", + "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "dev": true, + "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.4.0", + "js-sha3": "0.5.7" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", + "dev": true, + "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.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz", + "integrity": "sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==", + "dev": true, + "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.4.0" + } + }, + "node_modules/@ethersproject/pbkdf2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", + "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "dev": true, + "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.4.0", + "@ethersproject/sha2": "^5.4.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", + "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", + "dev": true, + "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.4.0" + } + }, + "node_modules/@ethersproject/providers": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.2.tgz", + "integrity": "sha512-Qr8Am8hlj2gL9HwNymhFlYd52MQVVEBLoDwPxhv4ASeyNpaoRiUAQnNEuE6SnEQtiwYkpLrQtSALNLUSeyuvjA==", + "dev": true, + "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.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0", + "bech32": "1.1.4", + "ws": "7.4.6" + } + }, + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "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 + } + } + }, + "node_modules/@ethersproject/random": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", + "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "dev": true, + "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.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", + "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "dev": true, + "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.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "node_modules/@ethersproject/sha2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", + "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", + "dev": true, + "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.4.0", + "@ethersproject/logger": "^5.4.0", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", + "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "dev": true, + "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.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/solidity": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", + "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "dev": true, + "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.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", + "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "dev": true, + "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.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", + "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "dev": true, + "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.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0" + } + }, + "node_modules/@ethersproject/units": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", + "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "dev": true, + "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.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "node_modules/@ethersproject/wallet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", + "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "dev": true, + "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.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/json-wallets": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", + "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "dev": true, + "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.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@ethersproject/wordlists": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", + "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "dev": true, + "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.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "node_modules/@nomiclabs/hardhat-ethers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz", + "integrity": "sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg==", + "dev": true, + "peerDependencies": { + "ethers": "^5.0.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@nomiclabs/hardhat-waffle": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz", + "integrity": "sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ==", + "dev": true, + "dependencies": { + "@types/sinon-chai": "^3.2.3", + "@types/web3": "1.0.19" + }, + "peerDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.0", + "ethereum-waffle": "^3.2.0", + "ethers": "^5.0.0", + "hardhat": "^2.0.0" + } + }, + "node_modules/@openzeppelin/contracts": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.1.tgz", + "integrity": "sha512-cUriqMauq1ylzP2TxePNdPqkwI7Le3Annh4K9rrpvKfSBB/bdW+Iu1ihBaTIABTAAJ85LmKL5SSPPL9ry8d1gQ==" + }, + "node_modules/@resolver-engine/core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", + "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", + "dev": true, + "dependencies": { + "debug": "^3.1.0", + "is-url": "^1.2.4", + "request": "^2.85.0" + } + }, + "node_modules/@resolver-engine/core/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@resolver-engine/fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", + "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", + "dev": true, + "dependencies": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0" + } + }, + "node_modules/@resolver-engine/fs/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@resolver-engine/imports": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", + "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", + "dev": true, + "dependencies": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0", + "hosted-git-info": "^2.6.0", + "path-browserify": "^1.0.0", + "url": "^0.11.0" + } + }, + "node_modules/@resolver-engine/imports-fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", + "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", + "dev": true, + "dependencies": { + "@resolver-engine/fs": "^0.3.3", + "@resolver-engine/imports": "^0.3.3", + "debug": "^3.1.0" + } + }, + "node_modules/@resolver-engine/imports-fs/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@resolver-engine/imports/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@solidity-parser/parser": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.11.1.tgz", + "integrity": "sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ==", + "dev": true + }, + "node_modules/@typechain/ethers-v5": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz", + "integrity": "sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==", + "dev": true, + "dependencies": { + "ethers": "^5.0.2" + }, + "peerDependencies": { + "ethers": "^5.0.0", + "typechain": "^3.0.0" + } + }, + "node_modules/@types/abstract-leveldown": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-5.0.2.tgz", + "integrity": "sha512-+jA1XXF3jsz+Z7FcuiNqgK53hTa/luglT2TyTpKPqoYbxVY+mCPF22Rm+q3KPBrMHJwNXFrTViHszBOfU4vftQ==", + "dev": true + }, + "node_modules/@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/chai": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", + "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", + "dev": true + }, + "node_modules/@types/level-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", + "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", + "dev": true + }, + "node_modules/@types/levelup": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", + "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", + "dev": true, + "dependencies": { + "@types/abstract-leveldown": "*", + "@types/level-errors": "*", + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.7.tgz", + "integrity": "sha512-aDDY54sst8sx47CWT6QQqIZp45yURq4dic0+HCYfYNcY5Ejlb/CLmFnRLfy3wQuYafOeh3lB/DAKaqRKBtcZmA==", + "dev": true + }, + "node_modules/@types/node-fetch": { + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sinon": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.2.tgz", + "integrity": "sha512-BHn8Bpkapj8Wdfxvh2jWIUoaYB/9/XhsL0oOvBfRagJtKlSl9NWPcFOz2lRukI9szwGxFtYZCTejJSqsGDbdmw==", + "dev": true, + "dependencies": { + "@sinonjs/fake-timers": "^7.1.0" + } + }, + "node_modules/@types/sinon-chai": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz", + "integrity": "sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==", + "dev": true, + "dependencies": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "node_modules/@types/underscore": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.3.tgz", + "integrity": "sha512-Fl1TX1dapfXyDqFg2ic9M+vlXRktcPJrc4PR7sRc7sdVrjavg/JHlbUXBt8qWWqhJrmSqg3RNAkAPRiOYw6Ahw==", + "dev": true + }, + "node_modules/@types/web3": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", + "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "dev": true, + "dependencies": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-leveldown": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", + "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", + "dev": true + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "dev": true, + "dependencies": { + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "dependencies": { + "async": "^2.4.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-aes/node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "node_modules/chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "dependencies": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "dependencies": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "node_modules/cliui/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/command-line-args": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", + "dev": true, + "dependencies": { + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" + }, + "bin": { + "command-line-args": "bin/cli.js" + } + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/core-js-pure": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.0.tgz", + "integrity": "sha512-wzlhZNepF/QA9yvx3ePDgNGudU5KDB8lu/TRPKelYA/QtSnkS/cLl2W+TIdEX1FAFcBr0YpY7tPDlcmXJ7AyiQ==", + "dev": true, + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "node_modules/crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, + "dependencies": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + }, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/cross-spawn/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "dependencies": { + "type-detect": "^4.0.0" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "dev": true, + "dependencies": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/deferred-leveldown/node_modules/abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "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==", + "dev": true, + "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/emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "node_modules/encoding-down": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", + "dev": true, + "dependencies": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.4.tgz", + "integrity": "sha512-xjDAPJRxKc1uoTkdW8MEk7Fq/2bzz3YoCADYniDV7+KITCUdu9c90fj1aKI7nEZFZxRrHlDo3wtma/C6QkhlXQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-abstract/node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "dev": true, + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "node_modules/eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/eth-sig-util": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz", + "integrity": "sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" + } + }, + "node_modules/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereum-waffle": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz", + "integrity": "sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==", + "dev": true, + "dependencies": { + "@ethereum-waffle/chai": "^3.4.0", + "@ethereum-waffle/compiler": "^3.4.0", + "@ethereum-waffle/mock-contract": "^3.3.0", + "@ethereum-waffle/provider": "^3.4.0", + "ethers": "^5.0.1" + }, + "bin": { + "waffle": "bin/waffle" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", + "integrity": "sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/ethers": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.2.tgz", + "integrity": "sha512-JcFcNWjULzhm4tMp5cZKnU45zqN/c7rqabIITiUiQzZuP7LcYSD4WAbADo4Ja6G2orU4d/PbhAWGHGtAKYrB4Q==", + "dev": true, + "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.4.0", + "@ethersproject/abstract-provider": "5.4.0", + "@ethersproject/abstract-signer": "5.4.0", + "@ethersproject/address": "5.4.0", + "@ethersproject/base64": "5.4.0", + "@ethersproject/basex": "5.4.0", + "@ethersproject/bignumber": "5.4.1", + "@ethersproject/bytes": "5.4.0", + "@ethersproject/constants": "5.4.0", + "@ethersproject/contracts": "5.4.0", + "@ethersproject/hash": "5.4.0", + "@ethersproject/hdnode": "5.4.0", + "@ethersproject/json-wallets": "5.4.0", + "@ethersproject/keccak256": "5.4.0", + "@ethersproject/logger": "5.4.0", + "@ethersproject/networks": "5.4.1", + "@ethersproject/pbkdf2": "5.4.0", + "@ethersproject/properties": "5.4.0", + "@ethersproject/providers": "5.4.2", + "@ethersproject/random": "5.4.0", + "@ethersproject/rlp": "5.4.0", + "@ethersproject/sha2": "5.4.0", + "@ethersproject/signing-key": "5.4.0", + "@ethersproject/solidity": "5.4.0", + "@ethersproject/strings": "5.4.0", + "@ethersproject/transactions": "5.4.0", + "@ethersproject/units": "5.4.0", + "@ethersproject/wallet": "5.4.0", + "@ethersproject/web": "5.4.0", + "@ethersproject/wordlists": "5.4.0" + } + }, + "node_modules/ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-replace": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", + "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", + "dev": true, + "dependencies": { + "array-back": "^1.0.4", + "test-value": "^2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/find-replace/node_modules/array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "dependencies": { + "typical": "^2.6.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "dependencies": { + "is-buffer": "~2.0.3" + }, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "node_modules/ganache-core": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz", + "integrity": "sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==", + "bundleDependencies": [ + "keccak", + "node-addon-api", + "node-gyp-build" + ], + "dev": true, + "hasShrinkwrap": true, + "dependencies": { + "abstract-leveldown": "3.0.0", + "async": "2.6.2", + "bip39": "2.5.0", + "cachedown": "1.0.0", + "clone": "2.1.2", + "debug": "3.2.6", + "encoding-down": "5.0.4", + "eth-sig-util": "3.0.0", + "ethereumjs-abi": "0.6.8", + "ethereumjs-account": "3.0.0", + "ethereumjs-block": "2.2.2", + "ethereumjs-common": "1.5.0", + "ethereumjs-tx": "2.1.2", + "ethereumjs-util": "6.2.1", + "ethereumjs-vm": "4.2.0", + "heap": "0.2.6", + "keccak": "3.0.1", + "level-sublevel": "6.6.4", + "levelup": "3.1.1", + "lodash": "4.17.20", + "lru-cache": "5.1.1", + "merkle-patricia-tree": "3.0.0", + "patch-package": "6.2.2", + "seedrandom": "3.0.1", + "source-map-support": "0.5.12", + "tmp": "0.1.0", + "web3-provider-engine": "14.2.1", + "websocket": "1.0.32" + }, + "engines": { + "node": ">=8.9.0" + }, + "optionalDependencies": { + "ethereumjs-wallet": "0.6.5", + "web3": "1.2.11" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/abi": { + "version": "5.0.0-beta.153", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/address": ">=5.0.0-beta.128", + "@ethersproject/bignumber": ">=5.0.0-beta.130", + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/constants": ">=5.0.0-beta.128", + "@ethersproject/hash": ">=5.0.0-beta.128", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/properties": ">=5.0.0-beta.131", + "@ethersproject/strings": ">=5.0.0-beta.130" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/abstract-provider": { + "version": "5.0.8", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@ethersproject/abstract-signer": { + "version": "5.0.10", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@ethersproject/address": { + "version": "5.0.9", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@ethersproject/base64": { + "version": "5.0.7", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/bignumber": { + "version": "5.0.13", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "bn.js": "^4.4.0" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/bytes": { + "version": "5.0.9", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/constants": { + "version": "5.0.8", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bignumber": "^5.0.13" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/hash": { + "version": "5.0.10", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@ethersproject/keccak256": { + "version": "5.0.7", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "js-sha3": "0.5.7" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/logger": { + "version": "5.0.8", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/@ethersproject/networks": { + "version": "5.0.7", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/properties": { + "version": "5.0.7", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/rlp": { + "version": "5.0.7", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/signing-key": { + "version": "5.0.8", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "elliptic": "6.5.3" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/strings": { + "version": "5.0.8", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "dependencies": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/logger": "^5.0.8" + } + }, + "node_modules/ganache-core/node_modules/@ethersproject/transactions": { + "version": "5.0.9", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@ethersproject/web": { + "version": "5.0.12", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "optional": true, + "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/ganache-core/node_modules/@sindresorhus/is": { + "version": "0.14.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/@types/bn.js": { + "version": "4.11.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-core/node_modules/@types/node": { + "version": "14.14.20", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/@types/pbkdf2": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-core/node_modules/@types/secp256k1": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ganache-core/node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/ganache-core/node_modules/abstract-leveldown": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/accepts": { + "version": "1.3.7", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/aes-js": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ganache-core/node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/arr-diff": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/arr-flatten": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/arr-union": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/array-flatten": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/array-unique": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/asn1": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/ganache-core/node_modules/asn1.js": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ganache-core/node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ganache-core/node_modules/assign-symbols": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/async": { + "version": "2.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "lodash": "^4.17.11" + } + }, + "node_modules/ganache-core/node_modules/async-eventemitter": { + "version": "0.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.4.0" + } + }, + "node_modules/ganache-core/node_modules/async-limiter": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/atob": { + "version": "2.1.2", + "dev": true, + "license": "(MIT OR Apache-2.0)", + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/ganache-core/node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/aws4": { + "version": "1.11.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-code-frame": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + } + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/js-tokens": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-code-frame/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ganache-core/node_modules/babel-core": { + "version": "6.26.3", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "node_modules/ganache-core/node_modules/babel-core/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/babel-core/node_modules/json5": { + "version": "0.5.1", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/ganache-core/node_modules/babel-core/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-core/node_modules/slash": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-generator": { + "version": "6.26.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/babel-generator/node_modules/jsesc": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-call-delegate": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-define-map": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-function-name": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-get-function-arity": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-hoist-variables": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-optimise-call-expression": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-regex": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helper-replace-supers": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-helpers": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-messages": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-regenerator": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerator-transform": "^0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "node_modules/ganache-core/node_modules/babel-preset-env": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "node_modules/ganache-core/node_modules/babel-preset-env/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/babel-register": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + } + }, + "node_modules/ganache-core/node_modules/babel-register/node_modules/source-map-support": { + "version": "0.4.18", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/ganache-core/node_modules/babel-runtime": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "node_modules/ganache-core/node_modules/babel-template": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "node_modules/ganache-core/node_modules/babel-traverse": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + } + }, + "node_modules/ganache-core/node_modules/babel-traverse/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/babel-traverse/node_modules/globals": { + "version": "9.18.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babel-traverse/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/babel-types": { + "version": "6.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + } + }, + "node_modules/ganache-core/node_modules/babel-types/node_modules/to-fast-properties": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/babelify": { + "version": "7.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "babel-core": "^6.0.14", + "object-assign": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/babylon": { + "version": "6.18.0", + "dev": true, + "license": "MIT", + "bin": { + "babylon": "bin/babylon.js" + } + }, + "node_modules/ganache-core/node_modules/backoff": { + "version": "2.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "precond": "0.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/balanced-match": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/base": { + "version": "0.11.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/base-x": { + "version": "3.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-core/node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/base64-js": { + "version": "1.5.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/ganache-core/node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/ganache-core/node_modules/bignumber.js": { + "version": "9.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/bip39": { + "version": "2.5.0", + "dev": true, + "license": "ISC", + "dependencies": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } + }, + "node_modules/ganache-core/node_modules/blakejs": { + "version": "1.1.0", + "dev": true, + "license": "CC0-1.0" + }, + "node_modules/ganache-core/node_modules/bluebird": { + "version": "3.7.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/bn.js": { + "version": "4.11.9", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/body-parser": { + "version": "1.19.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/body-parser/node_modules/qs": { + "version": "6.7.0", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ganache-core/node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/ganache-core/node_modules/brorand": { + "version": "1.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/browserify-aes": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-core/node_modules/browserify-cipher": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/browserify-des": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-core/node_modules/browserify-rsa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/ganache-core/node_modules/browserify-rsa/node_modules/bn.js": { + "version": "5.1.3", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/browserify-sign": { + "version": "4.2.1", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/ganache-core/node_modules/browserify-sign/node_modules/bn.js": { + "version": "5.1.3", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ganache-core/node_modules/browserslist": { + "version": "3.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + }, + "bin": { + "browserslist": "cli.js" + } + }, + "node_modules/ganache-core/node_modules/bs58": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/ganache-core/node_modules/bs58check": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-core/node_modules/buffer": { + "version": "5.7.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/ganache-core/node_modules/buffer-from": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/buffer-to-arraybuffer": { + "version": "0.0.5", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/buffer-xor": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/bufferutil": { + "version": "4.0.3", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/ganache-core/node_modules/bytes": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/bytewise": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "node_modules/ganache-core/node_modules/bytewise-core": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "typewise-core": "^1.2" + } + }, + "node_modules/ganache-core/node_modules/cache-base": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/cacheable-request": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ganache-core/node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ganache-core/node_modules/cachedown": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "^2.4.1", + "lru-cache": "^3.2.0" + } + }, + "node_modules/ganache-core/node_modules/cachedown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/cachedown/node_modules/lru-cache": { + "version": "3.2.0", + "dev": true, + "license": "ISC", + "dependencies": { + "pseudomap": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/call-bind": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/caniuse-lite": { + "version": "1.0.30001174", + "dev": true, + "license": "CC-BY-4.0" + }, + "node_modules/ganache-core/node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/ganache-core/node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/checkpoint-store": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/chownr": { + "version": "1.1.4", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ganache-core/node_modules/ci-info": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/cids": { + "version": "0.7.5", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "engines": { + "node": ">=4.0.0", + "npm": ">=3.0.0" + } + }, + "node_modules/ganache-core/node_modules/cids/node_modules/multicodec": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/cipher-base": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ganache-core/node_modules/class-is": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/class-utils": { + "version": "0.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/class-utils/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/clone": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ganache-core/node_modules/clone-response": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/collection-visit": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ganache-core/node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/component-emitter": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/concat-stream": { + "version": "1.6.2", + "dev": true, + "engines": [ + "node >= 0.8" + ], + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/ganache-core/node_modules/content-disposition": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/content-hash": { + "version": "2.5.2", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "node_modules/ganache-core/node_modules/content-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/convert-source-map": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/convert-source-map/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/cookie": { + "version": "0.4.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/cookie-signature": { + "version": "1.0.6", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/cookiejar": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/copy-descriptor": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/core-js": { + "version": "2.6.12", + "dev": true, + "hasInstallScript": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/core-js-pure": { + "version": "3.8.2", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/ganache-core/node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/cors": { + "version": "2.8.5", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ganache-core/node_modules/create-ecdh": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/ganache-core/node_modules/create-hash": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/ganache-core/node_modules/create-hmac": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/ganache-core/node_modules/cross-fetch": { + "version": "2.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + } + }, + "node_modules/ganache-core/node_modules/crypto-browserify": { + "version": "3.12.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/d": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/ganache-core/node_modules/debug": { + "version": "3.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/ganache-core/node_modules/decode-uri-component": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/ganache-core/node_modules/decompress-response": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/deep-equal": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/defer-to-connect": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/deferred-leveldown": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/deferred-leveldown/node_modules/abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/define-properties": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "object-keys": "^1.0.12" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ganache-core/node_modules/define-property": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/defined": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/ganache-core/node_modules/depd": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/des.js": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/destroy": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/detect-indent": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "repeating": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/diffie-hellman": { + "version": "5.0.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/dom-walk": { + "version": "0.1.2", + "dev": true + }, + "node_modules/ganache-core/node_modules/dotignore": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "minimatch": "^3.0.4" + }, + "bin": { + "ignored": "bin/ignored" + } + }, + "node_modules/ganache-core/node_modules/duplexer3": { + "version": "0.1.4", + "dev": true, + "license": "BSD-3-Clause", + "optional": true + }, + "node_modules/ganache-core/node_modules/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ganache-core/node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/electron-to-chromium": { + "version": "1.3.636", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/elliptic": { + "version": "6.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/encoding": { + "version": "0.1.13", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/ganache-core/node_modules/encoding-down": { + "version": "5.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/encoding-down/node_modules/abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/end-of-stream": { + "version": "1.4.4", + "dev": true, + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/ganache-core/node_modules/errno": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/ganache-core/node_modules/es-abstract": { + "version": "1.18.0-next.1", + "dev": true, + "license": "MIT", + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/es-to-primitive": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/es5-ext": { + "version": "0.10.53", + "dev": true, + "license": "ISC", + "dependencies": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "node_modules/ganache-core/node_modules/es6-iterator": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/ganache-core/node_modules/es6-symbol": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/ganache-core/node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ganache-core/node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/etag": { + "version": "1.8.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/eth-block-tracker": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eth-query": "^2.1.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.3", + "ethjs-util": "^0.1.3", + "json-rpc-engine": "^3.6.0", + "pify": "^2.3.0", + "tape": "^4.6.3" + } + }, + "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-block-tracker/node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/eth-ens-namehash": { + "version": "2.0.8", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-infura": { + "version": "3.2.1", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-fetch": "^2.1.1", + "eth-json-rpc-middleware": "^1.5.0", + "json-rpc-engine": "^3.4.0", + "json-rpc-error": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware": { + "version": "1.6.0", + "dev": true, + "license": "ISC", + "dependencies": { + "async": "^2.5.0", + "eth-query": "^2.1.2", + "eth-tx-summary": "^3.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.1.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^3.6.0", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "tape": "^4.6.3" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-block/node_modules/ethereum-common": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-codec": { + "version": "7.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-errors": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/levelup": { + "version": "1.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/memdown": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/object-keys": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/semver": { + "version": "5.4.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/eth-json-rpc-middleware/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-lib": { + "version": "0.1.29", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/ganache-core/node_modules/eth-query": { + "version": "2.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "node_modules/ganache-core/node_modules/eth-sig-util": { + "version": "3.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "buffer": "^5.2.1", + "elliptic": "^6.4.0", + "ethereumjs-abi": "0.6.5", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.0", + "tweetnacl-util": "^0.15.0" + } + }, + "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-abi": { + "version": "0.6.5", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.10.0", + "ethereumjs-util": "^4.3.0" + } + }, + "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-abi/node_modules/ethereumjs-util": { + "version": "4.5.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-sig-util/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary": { + "version": "3.2.4", + "dev": true, + "license": "ISC", + "dependencies": { + "async": "^2.1.2", + "clone": "^2.0.0", + "concat-stream": "^1.5.1", + "end-of-stream": "^1.1.0", + "eth-query": "^2.0.2", + "ethereumjs-block": "^1.4.1", + "ethereumjs-tx": "^1.1.1", + "ethereumjs-util": "^5.0.1", + "ethereumjs-vm": "^2.6.0", + "through2": "^2.0.3" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-block/node_modules/ethereum-common": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-codec": { + "version": "7.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-errors": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/levelup": { + "version": "1.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/memdown": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/object-keys": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/semver": { + "version": "5.4.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/eth-tx-summary/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethashjs": { + "version": "0.0.8", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.0.2", + "miller-rabin": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethashjs/node_modules/bn.js": { + "version": "5.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethashjs/node_modules/buffer-xor": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethashjs/node_modules/ethereumjs-util": { + "version": "7.0.7", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereum-bloom-filters": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "js-sha3": "^0.8.0" + } + }, + "node_modules/ganache-core/node_modules/ethereum-bloom-filters/node_modules/js-sha3": { + "version": "0.8.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/ethereum-common": { + "version": "0.0.18", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-abi": { + "version": "0.6.8", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-account": { + "version": "3.0.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-codec": { + "version": "7.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-errors": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/levelup": { + "version": "1.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/memdown": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/object-keys": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/semver": { + "version": "5.4.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-block/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-blockchain": { + "version": "4.0.4", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.6.1", + "ethashjs": "~0.0.7", + "ethereumjs-block": "~2.2.2", + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.1.0", + "flow-stoplight": "^1.0.0", + "level-mem": "^3.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.2", + "semaphore": "^1.1.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-common": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm": { + "version": "4.2.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "core-js-pure": "^3.0.1", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.2", + "ethereumjs-blockchain": "^4.0.3", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.2", + "ethereumjs-util": "^6.2.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1", + "util.promisify": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-codec": { + "version": "7.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-errors": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/levelup": { + "version": "1.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/memdown": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/object-keys": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/semver": { + "version": "5.4.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/ethereumjs-vm/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ethereumjs-wallet": { + "version": "0.6.5", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "aes-js": "^3.1.1", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^6.0.0", + "randombytes": "^2.0.6", + "safe-buffer": "^5.1.2", + "scryptsy": "^1.2.1", + "utf8": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "node_modules/ganache-core/node_modules/ethjs-unit": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-core/node_modules/ethjs-unit/node_modules/bn.js": { + "version": "4.11.6", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/ethjs-util": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-core/node_modules/eventemitter3": { + "version": "4.0.4", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/events": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/ganache-core/node_modules/evp_bytestokey": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/express": { + "version": "4.17.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/ganache-core/node_modules/express/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/express/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/express/node_modules/qs": { + "version": "6.7.0", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ganache-core/node_modules/express/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/ext": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "type": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/ext/node_modules/type": { + "version": "2.1.0", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/extend": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/extend-shallow": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/extglob": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/fake-merkle-patricia-tree": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "checkpoint-store": "^1.1.0" + } + }, + "node_modules/ganache-core/node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/fetch-ponyfill": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "node-fetch": "~1.7.1" + } + }, + "node_modules/ganache-core/node_modules/fetch-ponyfill/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/fetch-ponyfill/node_modules/node-fetch": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root": { + "version": "1.2.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "fs-extra": "^4.0.3", + "micromatch": "^3.1.4" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/braces": { + "version": "2.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fill-range": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/fs-extra": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/micromatch": { + "version": "3.1.10", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/find-yarn-workspace-root/node_modules/to-regex-range": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/flow-stoplight": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/for-each": { + "version": "0.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/ganache-core/node_modules/for-in": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/form-data": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/ganache-core/node_modules/forwarded": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/fragment-cache": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/fresh": { + "version": "0.5.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/fs-extra": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/ganache-core/node_modules/fs.realpath": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/functional-red-black-tree": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/get-intrinsic": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ganache-core/node_modules/get-value": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/getpass": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/glob": { + "version": "7.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/global": { + "version": "4.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/ganache-core/node_modules/got": { + "version": "9.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/ganache-core/node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/graceful-fs": { + "version": "4.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/har-schema": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/har-validator": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/ganache-core/node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-flag": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/has-symbol-support-x": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/has-symbols": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/has-value": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-values": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/hash-base": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ganache-core/node_modules/hash.js": { + "version": "1.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/heap": { + "version": "0.2.6", + "dev": true + }, + "node_modules/ganache-core/node_modules/hmac-drbg": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/home-or-tmp": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/http-cache-semantics": { + "version": "4.1.0", + "dev": true, + "license": "BSD-2-Clause", + "optional": true + }, + "node_modules/ganache-core/node_modules/http-errors": { + "version": "1.7.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/http-errors/node_modules/inherits": { + "version": "2.0.3", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ganache-core/node_modules/http-https": { + "version": "1.0.0", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ganache-core/node_modules/http-signature": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/ganache-core/node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/idna-uts46-hx": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "punycode": "2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/ganache-core/node_modules/idna-uts46-hx/node_modules/punycode": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/ieee754": { + "version": "1.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ganache-core/node_modules/immediate": { + "version": "3.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/ganache-core/node_modules/inherits": { + "version": "2.0.4", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/invariant": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/ipaddr.js": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ganache-core/node_modules/is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-arguments": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-callable": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-ci": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/ganache-core/node_modules/is-data-descriptor": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-date-object": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-descriptor": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-extendable": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-finite": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ganache-core/node_modules/is-fn": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-function": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/is-hex-prefixed": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-core/node_modules/is-negative-zero": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-object": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-plain-obj": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-plain-object": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-regex": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-retry-allowed": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/is-symbol": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/is-typedarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/is-windows": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/isurl": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ganache-core/node_modules/js-sha3": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/json-buffer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/json-rpc-engine": { + "version": "3.8.0", + "dev": true, + "license": "ISC", + "dependencies": { + "async": "^2.0.1", + "babel-preset-env": "^1.7.0", + "babelify": "^7.3.0", + "json-rpc-error": "^2.0.0", + "promise-to-callback": "^1.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/json-rpc-error": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1" + } + }, + "node_modules/ganache-core/node_modules/json-rpc-random-id": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/json-schema": { + "version": "0.2.3", + "dev": true + }, + "node_modules/ganache-core/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/json-stable-stringify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "jsonify": "~0.0.0" + } + }, + "node_modules/ganache-core/node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/ganache-core/node_modules/jsonify": { + "version": "0.0.0", + "dev": true, + "license": "Public Domain" + }, + "node_modules/ganache-core/node_modules/jsprim": { + "version": "1.4.1", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/ganache-core/node_modules/keccak": { + "version": "3.0.1", + "dev": true, + "hasInstallScript": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ganache-core/node_modules/keyv": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/ganache-core/node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/klaw-sync": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/ganache-core/node_modules/level-codec": { + "version": "9.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-errors": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-iterator-stream": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.5", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/level-mem": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-mem/node_modules/abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-mem/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/level-mem/node_modules/memdown": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-mem/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/level-packager": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/level-post": { + "version": "1.0.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ltgt": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/level-sublevel": { + "version": "6.6.4", + "dev": true, + "license": "MIT", + "dependencies": { + "bytewise": "~1.1.0", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "level-iterator-stream": "^2.0.3", + "ltgt": "~2.1.1", + "pull-defer": "^0.2.2", + "pull-level": "^2.0.3", + "pull-stream": "^3.6.8", + "typewiselite": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/level-ws": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.8", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/levelup": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/levelup/node_modules/level-iterator-stream": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/lodash": { + "version": "4.17.20", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/looper": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/loose-envify": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/ganache-core/node_modules/lowercase-keys": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/lru-cache": { + "version": "5.1.1", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ganache-core/node_modules/ltgt": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/map-cache": { + "version": "0.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/map-visit": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/md5.js": { + "version": "1.3.5", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-core/node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/merge-descriptors": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/merkle-patricia-tree": { + "version": "3.0.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.6.1", + "ethereumjs-util": "^5.2.0", + "level-mem": "^3.0.1", + "level-ws": "^1.0.0", + "readable-stream": "^3.0.6", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/merkle-patricia-tree/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/merkle-patricia-tree/node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ganache-core/node_modules/methods": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/miller-rabin": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/ganache-core/node_modules/mime": { + "version": "1.6.0", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/mime-db": { + "version": "1.45.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/mime-types": { + "version": "2.1.28", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.45.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/mimic-response": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/min-document": { + "version": "2.19.0", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "node_modules/ganache-core/node_modules/minimalistic-assert": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/minimatch": { + "version": "3.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/minimist": { + "version": "1.2.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/minizlib": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^2.9.0" + } + }, + "node_modules/ganache-core/node_modules/minizlib/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/ganache-core/node_modules/mixin-deep": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/mkdirp": { + "version": "0.5.5", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/ganache-core/node_modules/mkdirp-promise": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "mkdirp": "*" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/mock-fs": { + "version": "4.13.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/ms": { + "version": "2.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/multibase": { + "version": "0.6.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/ganache-core/node_modules/multicodec": { + "version": "0.5.7", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "varint": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/multihashes": { + "version": "0.4.21", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/multihashes/node_modules/multibase": { + "version": "0.7.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "node_modules/ganache-core/node_modules/nano-json-stream-parser": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/nanomatch": { + "version": "1.2.13", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/negotiator": { + "version": "0.6.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/next-tick": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/nice-try": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/node-addon-api": { + "version": "2.0.2", + "dev": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/node-fetch": { + "version": "2.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/ganache-core/node_modules/node-gyp-build": { + "version": "4.2.3", + "dev": true, + "inBundle": true, + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/ganache-core/node_modules/normalize-url": { + "version": "4.5.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ganache-core/node_modules/number-to-bn": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-core/node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/oauth-sign": { + "version": "0.9.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/is-descriptor/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object-inspect": { + "version": "1.9.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/object-is": { + "version": "1.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/object-keys": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ganache-core/node_modules/object-visit": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/object.assign": { + "version": "4.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/object.getownpropertydescriptors": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/object.pick": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/oboe": { + "version": "2.1.4", + "dev": true, + "license": "BSD", + "optional": true, + "dependencies": { + "http-https": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/once": { + "version": "1.4.0", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/ganache-core/node_modules/os-homedir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/p-cancelable": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/p-timeout": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/p-timeout/node_modules/p-finally": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/parse-asn1": { + "version": "5.1.6", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/parse-headers": { + "version": "2.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/pascalcase": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/patch-package": { + "version": "6.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^1.2.1", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "npm": ">5" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/cross-spawn": { + "version": "6.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/path-key": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/shebang-command": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/shebang-regex": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/ganache-core/node_modules/patch-package/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/ganache-core/node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/path-parse": { + "version": "1.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/path-to-regexp": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/pbkdf2": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/ganache-core/node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/posix-character-classes": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/precond": { + "version": "0.2.3", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/prepend-http": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/private": { + "version": "0.1.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/process": { + "version": "0.11.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/ganache-core/node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/promise-to-callback": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/proxy-addr": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ganache-core/node_modules/prr": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/pseudomap": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/psl": { + "version": "1.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/public-encrypt": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/ganache-core/node_modules/pull-cat": { + "version": "1.1.11", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/pull-defer": { + "version": "0.2.3", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/pull-level": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "level-post": "^1.0.7", + "pull-cat": "^1.1.9", + "pull-live": "^1.0.1", + "pull-pushable": "^2.0.0", + "pull-stream": "^3.4.0", + "pull-window": "^2.1.4", + "stream-to-pull-stream": "^1.7.1" + } + }, + "node_modules/ganache-core/node_modules/pull-live": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pull-cat": "^1.1.9", + "pull-stream": "^3.4.0" + } + }, + "node_modules/ganache-core/node_modules/pull-pushable": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/pull-stream": { + "version": "3.6.14", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/pull-window": { + "version": "2.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "looper": "^2.0.0" + } + }, + "node_modules/ganache-core/node_modules/pump": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/ganache-core/node_modules/punycode": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/qs": { + "version": "6.5.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ganache-core/node_modules/query-string": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/ganache-core/node_modules/randomfill": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/ganache-core/node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/raw-body": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/ganache-core/node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/regenerate": { + "version": "1.4.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/regenerator-runtime": { + "version": "0.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/regenerator-transform": { + "version": "0.10.1", + "dev": true, + "license": "BSD", + "dependencies": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "node_modules/ganache-core/node_modules/regex-not": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/regexp.prototype.flags": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/regexp.prototype.flags/node_modules/es-abstract": { + "version": "1.17.7", + "dev": true, + "license": "MIT", + "dependencies": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/regexpu-core": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "node_modules/ganache-core/node_modules/regjsgen": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/regjsparser": { + "version": "0.1.5", + "dev": true, + "license": "BSD", + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/ganache-core/node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/ganache-core/node_modules/repeat-element": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/repeat-string": { + "version": "1.6.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/ganache-core/node_modules/repeating": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-finite": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/request": { + "version": "2.88.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ganache-core/node_modules/resolve-url": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/responselike": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/resumer": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "~2.3.4" + } + }, + "node_modules/ganache-core/node_modules/ret": { + "version": "0.1.15", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.12" + } + }, + "node_modules/ganache-core/node_modules/rimraf": { + "version": "2.6.3", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ganache-core/node_modules/ripemd160": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/ganache-core/node_modules/rlp": { + "version": "2.2.6", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.1" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/ganache-core/node_modules/rustbn.js": { + "version": "0.2.0", + "dev": true, + "license": "(MIT OR Apache-2.0)" + }, + "node_modules/ganache-core/node_modules/safe-buffer": { + "version": "5.2.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/safe-event-emitter": { + "version": "1.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "events": "^3.0.0" + } + }, + "node_modules/ganache-core/node_modules/safe-regex": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/ganache-core/node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/scrypt-js": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/scryptsy": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "pbkdf2": "^3.0.3" + } + }, + "node_modules/ganache-core/node_modules/secp256k1": { + "version": "4.0.2", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/ganache-core/node_modules/seedrandom": { + "version": "3.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/semaphore": { + "version": "1.1.0", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ganache-core/node_modules/send": { + "version": "0.17.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ganache-core/node_modules/send/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/send/node_modules/ms": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/serve-static": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ganache-core/node_modules/servify": { + "version": "0.1.12", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/set-immediate-shim": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/set-value": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/setprototypeof": { + "version": "1.1.1", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/ganache-core/node_modules/sha.js": { + "version": "2.4.11", + "dev": true, + "license": "(MIT AND BSD-3-Clause)", + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/ganache-core/node_modules/simple-concat": { + "version": "1.0.1", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/simple-get": { + "version": "2.8.1", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon": { + "version": "0.8.2", + "dev": true, + "license": "MIT", + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon-node": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon-util": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon-util/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/source-map-resolve": { + "version": "0.5.3", + "dev": true, + "license": "MIT", + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/ganache-core/node_modules/source-map-support": { + "version": "0.5.12", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/ganache-core/node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/source-map-url": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/split-string": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/sshpk": { + "version": "1.16.1", + "dev": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/ganache-core/node_modules/static-extend": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-accessor-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-data-descriptor/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.6", + "dev": true, + "license": "MIT", + "dependencies": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/static-extend/node_modules/kind-of": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/stream-to-pull-stream": { + "version": "1.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "looper": "^3.0.0", + "pull-stream": "^3.2.3" + } + }, + "node_modules/ganache-core/node_modules/stream-to-pull-stream/node_modules/looper": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/strict-uri-encode": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/ganache-core/node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/string.prototype.trim": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/string.prototype.trimend": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/string.prototype.trimstart": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/strip-hex-prefix": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/ganache-core/node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/swarm-js": { + "version": "0.1.40", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/fs-extra": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/get-stream": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/got": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/is-stream": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/p-cancelable": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/prepend-http": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/swarm-js/node_modules/url-parse-lax": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prepend-http": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/tape": { + "version": "4.13.3", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.5", + "object-inspect": "~1.7.0", + "resolve": "~1.17.0", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "bin": { + "tape": "bin/tape" + } + }, + "node_modules/ganache-core/node_modules/tape/node_modules/glob": { + "version": "7.1.6", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ganache-core/node_modules/tape/node_modules/is-regex": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/tape/node_modules/object-inspect": { + "version": "1.7.0", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/tape/node_modules/resolve": { + "version": "1.17.0", + "dev": true, + "license": "MIT", + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/tar": { + "version": "4.4.13", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "engines": { + "node": ">=4.5" + } + }, + "node_modules/ganache-core/node_modules/tar/node_modules/fs-minipass": { + "version": "1.2.7", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^2.6.0" + } + }, + "node_modules/ganache-core/node_modules/tar/node_modules/minipass": { + "version": "2.9.0", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "node_modules/ganache-core/node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/through2": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/ganache-core/node_modules/timed-out": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/tmp": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^2.6.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/to-object-path": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/to-object-path/node_modules/is-buffer": { + "version": "1.1.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/to-readable-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ganache-core/node_modules/to-regex": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/toidentifier": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/ganache-core/node_modules/tough-cookie": { + "version": "2.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ganache-core/node_modules/trim-right": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ganache-core/node_modules/tweetnacl": { + "version": "1.0.3", + "dev": true, + "license": "Unlicense" + }, + "node_modules/ganache-core/node_modules/tweetnacl-util": { + "version": "0.15.1", + "dev": true, + "license": "Unlicense" + }, + "node_modules/ganache-core/node_modules/type": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ganache-core/node_modules/typedarray": { + "version": "0.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/ganache-core/node_modules/typewise": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "typewise-core": "^1.2.0" + } + }, + "node_modules/ganache-core/node_modules/typewise-core": { + "version": "1.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/typewiselite": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/ultron": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/underscore": { + "version": "1.9.1", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/union-value": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/ganache-core/node_modules/unorm": { + "version": "1.6.0", + "dev": true, + "license": "MIT or GPL-2.0", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/ganache-core/node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/unset-value": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/ganache-core/node_modules/urix": { + "version": "0.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/url-parse-lax": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/ganache-core/node_modules/url-set-query": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/url-to-options": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ganache-core/node_modules/use": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ganache-core/node_modules/utf-8-validate": { + "version": "5.0.4", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "node-gyp-build": "^4.2.0" + } + }, + "node_modules/ganache-core/node_modules/utf8": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/util.promisify": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ganache-core/node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/ganache-core/node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/ganache-core/node_modules/varint": { + "version": "5.0.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ganache-core/node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/ganache-core/node_modules/web3": { + "version": "1.2.11", + "dev": true, + "hasInstallScript": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "web3-bzz": "1.2.11", + "web3-core": "1.2.11", + "web3-eth": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-shh": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-bzz": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-bzz/node_modules/@types/node": { + "version": "12.19.12", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/web3-core": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-requestmanager": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core-helpers": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core-method": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core-promievent": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "eventemitter3": "4.0.4" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core-requestmanager": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-providers-http": "1.2.11", + "web3-providers-ipc": "1.2.11", + "web3-providers-ws": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core-subscriptions": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-core/node_modules/@types/node": { + "version": "12.19.12", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/web3-eth": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-accounts": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-eth-ens": "1.2.11", + "web3-eth-iban": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-abi": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@ethersproject/abi": "5.0.0-beta.153", + "underscore": "1.9.1", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-accounts": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "scrypt-js": "^3.0.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-accounts/node_modules/eth-lib": { + "version": "0.2.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-accounts/node_modules/uuid": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "optional": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-contract": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@types/bn.js": "^4.11.5", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-ens": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-iban": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "bn.js": "^4.11.9", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-personal": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "@types/node": "^12.12.6", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-eth-personal/node_modules/@types/node": { + "version": "12.19.12", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/web3-net": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine": { + "version": "14.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^3.0.0", + "eth-json-rpc-infura": "^3.1.0", + "eth-sig-util": "3.0.0", + "ethereumjs-block": "^1.2.2", + "ethereumjs-tx": "^1.2.0", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.6.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/eth-sig-util": { + "version": "1.4.2", + "dev": true, + "license": "ISC", + "dependencies": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-block/node_modules/ethereum-common": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-block/node_modules/ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ethereumjs-vm/node_modules/ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/isarray": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-codec": { + "version": "7.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-errors": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "errno": "~0.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-iterator-stream/node_modules/readable-stream": { + "version": "1.1.14", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws": { + "version": "0.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws/node_modules/readable-stream": { + "version": "1.0.34", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/level-ws/node_modules/xtend": { + "version": "2.1.2", + "dev": true, + "dependencies": { + "object-keys": "~0.4.0" + }, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/levelup": { + "version": "1.3.9", + "dev": true, + "license": "MIT", + "dependencies": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ltgt": { + "version": "2.2.1", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/memdown": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/memdown/node_modules/abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "license": "MIT", + "dependencies": { + "xtend": "~4.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "license": "MPL-2.0", + "dependencies": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/merkle-patricia-tree/node_modules/async": { + "version": "1.5.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/object-keys": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/semver": { + "version": "5.4.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/string_decoder": { + "version": "0.10.31", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/web3-provider-engine/node_modules/ws": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "async-limiter": "~1.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-providers-http": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "web3-core-helpers": "1.2.11", + "xhr2-cookies": "1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-providers-ipc": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-providers-ws": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "websocket": "^1.0.31" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-shh": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-net": "1.2.11" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-utils": { + "version": "1.2.11", + "dev": true, + "license": "LGPL-3.0", + "optional": true, + "dependencies": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/ganache-core/node_modules/web3-utils/node_modules/eth-lib": { + "version": "0.2.8", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "node_modules/ganache-core/node_modules/websocket": { + "version": "1.0.32", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/ganache-core/node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/ganache-core/node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/whatwg-fetch": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ganache-core/node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/ganache-core/node_modules/ws": { + "version": "3.3.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + } + }, + "node_modules/ganache-core/node_modules/ws/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/ganache-core/node_modules/xhr": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/ganache-core/node_modules/xhr-request": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/ganache-core/node_modules/xhr-request-promise": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/ganache-core/node_modules/xhr2-cookies": { + "version": "1.1.0", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "cookiejar": "^2.1.1" + } + }, + "node_modules/ganache-core/node_modules/xtend": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/ganache-core/node_modules/yaeti": { + "version": "0.0.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/ganache-core/node_modules/yallist": { + "version": "3.1.1", + "dev": true, + "license": "ISC" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "dependencies": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "node_modules/growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true, + "engines": { + "node": ">=4.x" + } + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/hardhat": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.5.0.tgz", + "integrity": "sha512-S5CWcmiFZlFF2qFGyf5LlgVnJDXwTs5UBKU3GPQCjsUD3NAIWzXr/4xDSij3YWdg751axgLiKAJM01cHcxGb7A==", + "dev": true, + "dependencies": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/blockchain": "^5.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@ethereumjs/vm": "^5.5.0", + "@ethersproject/abi": "^5.1.2", + "@sentry/node": "^5.18.1", + "@solidity-parser/parser": "^0.11.0", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "eth-sig-util": "^2.5.2", + "ethereum-cryptography": "^0.1.2", + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^7.1.0", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "https-proxy-agent": "^5.0.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "lodash": "^4.17.11", + "merkle-patricia-tree": "^4.2.0", + "mnemonist": "^0.38.0", + "mocha": "^7.1.2", + "node-fetch": "^2.6.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "slash": "^3.0.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "true-case-path": "^2.2.1", + "tsort": "0.0.1", + "uuid": "^3.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/cli.js" + }, + "engines": { + "node": ">=8.2.0" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "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=", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "dependencies": { + "punycode": "2.1.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "dev": true + }, + "node_modules/immutable": { + "version": "4.0.0-rc.14", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.14.tgz", + "integrity": "sha512-pfkvmRKJSoW7JFx0QeYlAmT+kNYvn5j0u7bnpNq4N2RCvHSTlLT208G8jgaquNe+Q8kCPHKOSpxJkyvLDpYq0w==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "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==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "node_modules/is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "node_modules/is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "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/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "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=", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "dependencies": { + "invert-kv": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "dev": true, + "dependencies": { + "buffer": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "dependencies": { + "errno": "~0.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-mem": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", + "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", + "dev": true, + "dependencies": { + "level-packager": "^5.0.3", + "memdown": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-packager": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", + "dev": true, + "dependencies": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "dev": true, + "dependencies": { + "xtend": "^4.0.2" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/level-ws": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", + "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.0", + "xtend": "^4.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "dev": true, + "dependencies": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "node_modules/log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "dependencies": { + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", + "dev": true + }, + "node_modules/mcl-wasm": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.8.tgz", + "integrity": "sha512-qNHlYO6wuEtSoH5A8TcZfCEHtw8gGPqF6hLZpQn2SVd/Mck0ELIKOkmj072D98S9B9CI/jZybTUC96q1P2/ZDw==", + "dev": true, + "dependencies": { + "typescript": "^4.3.4" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memdown": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", + "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", + "dev": true, + "dependencies": { + "abstract-leveldown": "~6.2.1", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/memdown/node_modules/abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/memdown/node_modules/immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", + "dev": true + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merkle-patricia-tree": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.0.tgz", + "integrity": "sha512-0sBVXs7z1Q1/kxzWZ3nPnxSPiaHKF/f497UQzt9O7isRcS10tel9jM/4TivF6Jv7V1yFq4bWyoATxbDUOen5vQ==", + "dev": true, + "dependencies": { + "@types/levelup": "^4.3.0", + "ethereumjs-util": "^7.0.10", + "level-mem": "^5.0.1", + "level-ws": "^2.0.0", + "readable-stream": "^3.6.0", + "rlp": "^2.2.4", + "semaphore-async-await": "^1.5.1" + } + }, + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "dependencies": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dev": true, + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "dependencies": { + "dom-walk": "^0.1.0" + } + }, + "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==", + "dev": true + }, + "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=", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "node_modules/mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/mnemonist": { + "version": "0.38.3", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", + "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", + "dev": true, + "dependencies": { + "obliterator": "^1.6.1" + } + }, + "node_modules/mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "dependencies": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.1.1" + } + }, + "node_modules/mocha/node_modules/debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "deprecated": "\"Please update to latest v2.3 or v2.2\"", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "dependencies": { + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "dependencies": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "node_modules/node-environment-flags/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "dev": true, + "dependencies": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/number-to-bn/node_modules/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", + "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "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/os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "dependencies": { + "lcid": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==", + "dev": true + }, + "node_modules/parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "dependencies": { + "error-ex": "^1.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/patch-package": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", + "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "dev": true, + "dependencies": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "bin": { + "patch-package": "index.js" + }, + "engines": { + "npm": ">5" + } + }, + "node_modules/patch-package/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/patch-package/node_modules/slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", + "dev": true, + "hasInstallScript": true + }, + "node_modules/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "dev": true, + "bin": { + "printj": "bin/printj.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "node_modules/psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "node_modules/punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dev": true, + "dependencies": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "dependencies": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "dependencies": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "dependencies": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "dependencies": { + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.1" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semaphore-async-await": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", + "integrity": "sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo=", + "dev": true, + "engines": { + "node": ">=4.1" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "dependencies": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "dependencies": { + "is-utf8": "^0.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/test-value": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", + "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", + "dev": true, + "dependencies": { + "array-back": "^1.0.3", + "typical": "^2.6.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/test-value/node_modules/array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "dependencies": { + "typical": "^2.6.0" + }, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/testrpc": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", + "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", + "deprecated": "testrpc has been renamed to ganache-cli, please use this package from now on.", + "dev": true + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/tough-cookie/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "node_modules/ts-essentials": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", + "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", + "dev": true + }, + "node_modules/ts-generator": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz", + "integrity": "sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==", + "dev": true, + "dependencies": { + "@types/mkdirp": "^0.5.2", + "@types/prettier": "^2.1.1", + "@types/resolve": "^0.0.8", + "chalk": "^2.4.1", + "glob": "^7.1.2", + "mkdirp": "^0.5.1", + "prettier": "^2.1.2", + "resolve": "^1.8.1", + "ts-essentials": "^1.0.0" + }, + "bin": { + "ts-generator": "dist/cli/run.js" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", + "dev": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typechain": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz", + "integrity": "sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==", + "dev": true, + "dependencies": { + "command-line-args": "^4.0.7", + "debug": "^4.1.1", + "fs-extra": "^7.0.0", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "ts-essentials": "^6.0.3", + "ts-generator": "^0.1.1" + }, + "bin": { + "typechain": "dist/cli/cli.js" + } + }, + "node_modules/typechain/node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/typechain/node_modules/ts-essentials": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz", + "integrity": "sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==", + "dev": true, + "peerDependencies": { + "typescript": ">=3.7.0" + } + }, + "node_modules/typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/typical": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "dev": true + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=", + "dev": true + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "node_modules/util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/web3-utils": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.0.tgz", + "integrity": "sha512-hNyw7Oxi6TM3ivXmv4hK5Cvyi9ML3UoKtcCYvLF9woPWh5v2dwCCVO1U3Iq5HHK7Dqq28t1d4CxWHqUfOfAkgg==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "node_modules/wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true, + "bin": { + "window-size": "cli.js" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true, + "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 + } + } + }, + "node_modules/xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "dependencies": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dev": true, + "dependencies": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "node_modules/xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dev": true, + "dependencies": { + "xhr-request": "^1.1.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "dependencies": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "node_modules/yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "node_modules/yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "dependencies": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "dependencies": { + "locate-path": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "dependencies": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs/node_modules/strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "dependencies": { + "ansi-regex": "^4.1.0" + }, + "engines": { + "node": ">=6" + } + } + }, + "dependencies": { + "@ensdomains/ens": { + "version": "0.4.5", + "resolved": "https://registry.npmjs.org/@ensdomains/ens/-/ens-0.4.5.tgz", + "integrity": "sha512-JSvpj1iNMFjK6K+uVl4unqMoa9rf5jopb8cya5UGBWz23Nw8hSNT7efgUx4BTlAPAgpNlEioUfeTyQ6J9ZvTVw==", + "dev": true, + "requires": { + "bluebird": "^3.5.2", + "eth-ens-namehash": "^2.0.8", + "solc": "^0.4.20", + "testrpc": "0.0.1", + "web3-utils": "^1.0.0-beta.31" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "camelcase": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", + "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "solc": { + "version": "0.4.26", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.4.26.tgz", + "integrity": "sha512-o+c6FpkiHd+HPjmjEVpQgH7fqZ14tJpXhho+/bQXlXbliLIS/xjXb42Vxh+qQY1WCSTMQ0+a5vR9vi0MfhU6mA==", + "dev": true, + "requires": { + "fs-extra": "^0.30.0", + "memorystream": "^0.3.1", + "require-from-string": "^1.1.0", + "semver": "^5.3.0", + "yargs": "^4.7.1" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "which-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", + "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yargs": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz", + "integrity": "sha1-wMQpJMpKqmsObaFznfshZDn53cA=", + "dev": true, + "requires": { + "cliui": "^3.2.0", + "decamelize": "^1.1.1", + "get-caller-file": "^1.0.1", + "lodash.assign": "^4.0.3", + "os-locale": "^1.4.0", + "read-pkg-up": "^1.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^1.0.1", + "which-module": "^1.0.0", + "window-size": "^0.2.0", + "y18n": "^3.2.1", + "yargs-parser": "^2.4.1" + } + }, + "yargs-parser": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-2.4.1.tgz", + "integrity": "sha1-hVaN488VD/SfpRgl8DqMiA3cxcQ=", + "dev": true, + "requires": { + "camelcase": "^3.0.0", + "lodash.assign": "^4.0.6" + } + } + } + }, + "@ensdomains/resolver": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@ensdomains/resolver/-/resolver-0.2.4.tgz", + "integrity": "sha512-bvaTH34PMCbv6anRa9I/0zjLJgY4EuznbEMgbV77JBCQ9KNC46rzi0avuxpOfu+xDjPEtSFGqVEOr5GlUSGudA==", + "dev": true + }, + "@ethereum-waffle/chai": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/chai/-/chai-3.4.0.tgz", + "integrity": "sha512-GVaFKuFbFUclMkhHtQTDnWBnBQMJc/pAbfbFj/nnIK237WPLsO3KDDslA7m+MNEyTAOFrcc0CyfruAGGXAQw3g==", + "dev": true, + "requires": { + "@ethereum-waffle/provider": "^3.4.0", + "ethers": "^5.0.0" + } + }, + "@ethereum-waffle/compiler": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/compiler/-/compiler-3.4.0.tgz", + "integrity": "sha512-a2wxGOoB9F1QFRE+Om7Cz2wn+pxM/o7a0a6cbwhaS2lECJgFzeN9xEkVrKahRkF4gEfXGcuORg4msP0Asxezlw==", + "dev": true, + "requires": { + "@resolver-engine/imports": "^0.3.3", + "@resolver-engine/imports-fs": "^0.3.3", + "@typechain/ethers-v5": "^2.0.0", + "@types/mkdirp": "^0.5.2", + "@types/node-fetch": "^2.5.5", + "ethers": "^5.0.1", + "mkdirp": "^0.5.1", + "node-fetch": "^2.6.1", + "solc": "^0.6.3", + "ts-generator": "^0.1.1", + "typechain": "^3.0.0" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "solc": { + "version": "0.6.12", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.6.12.tgz", + "integrity": "sha512-Lm0Ql2G9Qc7yPP2Ba+WNmzw2jwsrd3u4PobHYlSOxaut3TtUbj9+5ZrT6f4DUpNPEoBaFUOEg9Op9C0mk7ge9g==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + } + } + } + }, + "@ethereum-waffle/ens": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/ens/-/ens-3.3.0.tgz", + "integrity": "sha512-zVIH/5cQnIEgJPg1aV8+ehYicpcfuAisfrtzYh1pN3UbfeqPylFBeBaIZ7xj/xYzlJjkrek/h9VfULl6EX9Aqw==", + "dev": true, + "requires": { + "@ensdomains/ens": "^0.4.4", + "@ensdomains/resolver": "^0.2.4", + "ethers": "^5.0.1" + } + }, + "@ethereum-waffle/mock-contract": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/mock-contract/-/mock-contract-3.3.0.tgz", + "integrity": "sha512-apwq0d+2nQxaNwsyLkE+BNMBhZ1MKGV28BtI9WjD3QD2Ztdt1q9II4sKA4VrLTUneYSmkYbJZJxw89f+OpJGyw==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.0.1", + "ethers": "^5.0.1" + } + }, + "@ethereum-waffle/provider": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereum-waffle/provider/-/provider-3.4.0.tgz", + "integrity": "sha512-QgseGzpwlzmaHXhqfdzthCGu5a6P1SBF955jQHf/rBkK1Y7gGo2ukt3rXgxgfg/O5eHqRU+r8xw5MzVyVaBscQ==", + "dev": true, + "requires": { + "@ethereum-waffle/ens": "^3.3.0", + "ethers": "^5.0.1", + "ganache-core": "^2.13.2", + "patch-package": "^6.2.2", + "postinstall-postinstall": "^2.1.0" + } + }, + "@ethereumjs/block": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/block/-/block-3.4.0.tgz", + "integrity": "sha512-umKAoTX32yXzErpIksPHodFc/5y8bmZMnOl6hWy5Vd8xId4+HKFUOyEiN16Y97zMwFRysRpcrR6wBejfqc6Bmg==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "ethereumjs-util": "^7.1.0", + "merkle-patricia-tree": "^4.2.0" + } + }, + "@ethereumjs/blockchain": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/blockchain/-/blockchain-5.4.0.tgz", + "integrity": "sha512-wAuKLaew6PL52kH8YPXO7PbjjKV12jivRSyHQehkESw4slSLLfYA6Jv7n5YxyT2ajD7KNMPVh7oyF/MU6HcOvg==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/ethash": "^1.0.0", + "debug": "^2.2.0", + "ethereumjs-util": "^7.1.0", + "level-mem": "^5.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.4", + "semaphore-async-await": "^1.5.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "@ethereumjs/common": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.4.0.tgz", + "integrity": "sha512-UdkhFWzWcJCZVsj1O/H8/oqj/0RVYjLc1OhPjBrQdALAkQHpCp8xXI4WLnuGTADqTdJZww0NtgwG+TRPkXt27w==", + "dev": true, + "requires": { + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.0" + } + }, + "@ethereumjs/ethash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/ethash/-/ethash-1.0.0.tgz", + "integrity": "sha512-iIqnGG6NMKesyOxv2YctB2guOVX18qMAWlj3QlZyrc+GqfzLqoihti+cVNQnyNxr7eYuPdqwLQOFuPe6g/uKjw==", + "dev": true, + "requires": { + "@types/levelup": "^4.3.0", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.0.7", + "miller-rabin": "^4.0.0" + } + }, + "@ethereumjs/tx": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.0.tgz", + "integrity": "sha512-yTwEj2lVzSMgE6Hjw9Oa1DZks/nKTWM8Wn4ykDNapBPua2f4nXO3qKnni86O6lgDj5fVNRqbDsD0yy7/XNGDEA==", + "dev": true, + "requires": { + "@ethereumjs/common": "^2.4.0", + "ethereumjs-util": "^7.1.0" + } + }, + "@ethereumjs/vm": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@ethereumjs/vm/-/vm-5.5.0.tgz", + "integrity": "sha512-h6Kr6WqKUP8nVuEzCWPWEPrC63v7HFwt3gRuK7CJiyg9S0iWSBKUA/YVD4YgaSVACuxUfWaOBbwV5uGVupm5PQ==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/blockchain": "^5.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "async-eventemitter": "^0.2.4", + "core-js-pure": "^3.0.1", + "debug": "^2.2.0", + "ethereumjs-util": "^7.1.0", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "merkle-patricia-tree": "^4.2.0", + "rustbn.js": "~0.2.0", + "util.promisify": "^1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "@ethersproject/abi": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.4.0.tgz", + "integrity": "sha512-9gU2H+/yK1j2eVMdzm6xvHSnMxk8waIHQGYCZg5uvAyH0rsAzxkModzBSpbAkAuhKFEovC2S9hM4nPuLym8IZw==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.4.0.tgz", + "integrity": "sha512-vPBR7HKUBY0lpdllIn7tLIzNN7DrVnhCLKSzY0l8WAwxz686m/aL7ASDzrVxV93GJtIub6N2t4dfZ29CkPOxgA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.4.0.tgz", + "integrity": "sha512-AieQAzt05HJZS2bMofpuxMEp81AHufA5D6M4ScKwtolj041nrfIbIi8ciNW7+F59VYxXq+V4c3d568Q6l2m8ew==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "@ethersproject/address": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.4.0.tgz", + "integrity": "sha512-SD0VgOEkcACEG/C6xavlU1Hy3m5DGSXW3CUHkaaEHbAPPsgi0coP5oNPsxau8eTlZOk/bpa/hKeCNoK5IzVI2Q==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/rlp": "^5.4.0" + } + }, + "@ethersproject/base64": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.4.0.tgz", + "integrity": "sha512-CjQw6E17QDSSC5jiM9YpF7N1aSCHmYGMt9bWD8PWv6YPMxjsys2/Q8xLrROKI3IWJ7sFfZ8B3flKDTM5wlWuZQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0" + } + }, + "@ethersproject/basex": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.4.0.tgz", + "integrity": "sha512-J07+QCVJ7np2bcpxydFVf/CuYo9mZ7T73Pe7KQY4c1lRlrixMeblauMxHXD0MPwFmUHZIILDNViVkykFBZylbg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/properties": "^5.4.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.4.1.tgz", + "integrity": "sha512-fJhdxqoQNuDOk6epfM7yD6J8Pol4NUCy1vkaGAkuujZm0+lNow//MKu1hLhRiYV4BsOHyBv5/lsTjF+7hWwhJg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "bn.js": "^4.11.9" + } + }, + "@ethersproject/bytes": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.4.0.tgz", + "integrity": "sha512-H60ceqgTHbhzOj4uRc/83SCN9d+BSUnOkrr2intevqdtEMO1JFVZ1XL84OEZV+QjV36OaZYxtnt4lGmxcGsPfA==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/constants": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.4.0.tgz", + "integrity": "sha512-tzjn6S7sj9+DIIeKTJLjK9WGN2Tj0P++Z8ONEIlZjyoTkBuODN+0VfhAyYksKi43l1Sx9tX2VlFfzjfmr5Wl3Q==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0" + } + }, + "@ethersproject/contracts": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.4.0.tgz", + "integrity": "sha512-hkO3L3IhS1Z3ZtHtaAG/T87nQ7KiPV+/qnvutag35I0IkiQ8G3ZpCQ9NNOpSCzn4pWSW4CfzmtE02FcqnLI+hw==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.4.0", + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/transactions": "^5.4.0" + } + }, + "@ethersproject/hash": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.4.0.tgz", + "integrity": "sha512-xymAM9tmikKgbktOCjW60Z5sdouiIIurkZUr9oW5NOex5uwxrbsYG09kb5bMcNjlVeJD3yPivTNzViIs1GCbqA==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/hdnode": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.4.0.tgz", + "integrity": "sha512-pKxdS0KAaeVGfZPp1KOiDLB0jba11tG6OP1u11QnYfb7pXn6IZx0xceqWRr6ygke8+Kw74IpOoSi7/DwANhy8Q==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/json-wallets": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.4.0.tgz", + "integrity": "sha512-igWcu3fx4aiczrzEHwG1xJZo9l1cFfQOWzTqwRw/xcvxTk58q4f9M7cjh51EKphMHvrJtcezJ1gf1q1AUOfEQQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/pbkdf2": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" + } + }, + "@ethersproject/keccak256": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.4.0.tgz", + "integrity": "sha512-FBI1plWet+dPUvAzPAeHzRKiPpETQzqSUWR1wXJGHVWi4i8bOSrpC3NwpkPjgeXG7MnugVc1B42VbfnQikyC/A==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.4.0.tgz", + "integrity": "sha512-xYdWGGQ9P2cxBayt64d8LC8aPFJk6yWCawQi/4eJ4+oJdMMjEBMrIcIMZ9AxhwpPVmnBPrsB10PcXGmGAqgUEQ==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.4.1.tgz", + "integrity": "sha512-8SvowCKz9Uf4xC5DTKI8+il8lWqOr78kmiqAVLYT9lzB8aSmJHQMD1GSuJI0CW4hMAnzocpGpZLgiMdzsNSPig==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/pbkdf2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.4.0.tgz", + "integrity": "sha512-x94aIv6tiA04g6BnazZSLoRXqyusawRyZWlUhKip2jvoLpzJuLb//KtMM6PEovE47pMbW+Qe1uw+68ameJjB7g==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/sha2": "^5.4.0" + } + }, + "@ethersproject/properties": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.4.0.tgz", + "integrity": "sha512-7jczalGVRAJ+XSRvNA6D5sAwT4gavLq3OXPuV/74o3Rd2wuzSL035IMpIMgei4CYyBdialJMrTqkOnzccLHn4A==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/providers": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.4.2.tgz", + "integrity": "sha512-Qr8Am8hlj2gL9HwNymhFlYd52MQVVEBLoDwPxhv4ASeyNpaoRiUAQnNEuE6SnEQtiwYkpLrQtSALNLUSeyuvjA==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/basex": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/networks": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/web": "^5.4.0", + "bech32": "1.1.4", + "ws": "7.4.6" + }, + "dependencies": { + "ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "dev": true, + "requires": {} + } + } + }, + "@ethersproject/random": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.4.0.tgz", + "integrity": "sha512-pnpWNQlf0VAZDEOVp1rsYQosmv2o0ITS/PecNw+mS2/btF8eYdspkN0vIXrCMtkX09EAh9bdk8GoXmFXM1eAKw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/rlp": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.4.0.tgz", + "integrity": "sha512-0I7MZKfi+T5+G8atId9QaQKHRvvasM/kqLyAH4XxBCBchAooH2EX5rL9kYZWwcm3awYV+XC7VF6nLhfeQFKVPg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/sha2": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.4.0.tgz", + "integrity": "sha512-siheo36r1WD7Cy+bDdE1BJ8y0bDtqXCOxRMzPa4bV1TGt/eTUUt03BHoJNB6reWJD8A30E/pdJ8WFkq+/uz4Gg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "hash.js": "1.1.7" + } + }, + "@ethersproject/signing-key": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.4.0.tgz", + "integrity": "sha512-q8POUeywx6AKg2/jX9qBYZIAmKSB4ubGXdQ88l40hmATj29JnG5pp331nAWwwxPn2Qao4JpWHNZsQN+bPiSW9A==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "bn.js": "^4.11.9", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/solidity": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.4.0.tgz", + "integrity": "sha512-XFQTZ7wFSHOhHcV1DpcWj7VXECEiSrBuv7JErJvB9Uo+KfCdc3QtUZV+Vjh/AAaYgezUEKbCtE6Khjm44seevQ==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/sha2": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/strings": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.4.0.tgz", + "integrity": "sha512-k/9DkH5UGDhv7aReXLluFG5ExurwtIpUfnDNhQA29w896Dw3i4uDTz01Quaptbks1Uj9kI8wo9tmW73wcIEaWA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/transactions": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.4.0.tgz", + "integrity": "sha512-s3EjZZt7xa4BkLknJZ98QGoIza94rVjaEed0rzZ/jB9WrIuu/1+tjvYCWzVrystXtDswy7TPBeIepyXwSYa4WQ==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/rlp": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0" + } + }, + "@ethersproject/units": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.4.0.tgz", + "integrity": "sha512-Z88krX40KCp+JqPCP5oPv5p750g+uU6gopDYRTBGcDvOASh6qhiEYCRatuM/suC4S2XW9Zz90QI35MfSrTIaFg==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/constants": "^5.4.0", + "@ethersproject/logger": "^5.4.0" + } + }, + "@ethersproject/wallet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.4.0.tgz", + "integrity": "sha512-wU29majLjM6AjCjpat21mPPviG+EpK7wY1+jzKD0fg3ui5fgedf2zEu1RDgpfIMsfn8fJHJuzM4zXZ2+hSHaSQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.4.0", + "@ethersproject/abstract-signer": "^5.4.0", + "@ethersproject/address": "^5.4.0", + "@ethersproject/bignumber": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/hdnode": "^5.4.0", + "@ethersproject/json-wallets": "^5.4.0", + "@ethersproject/keccak256": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/random": "^5.4.0", + "@ethersproject/signing-key": "^5.4.0", + "@ethersproject/transactions": "^5.4.0", + "@ethersproject/wordlists": "^5.4.0" + } + }, + "@ethersproject/web": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.4.0.tgz", + "integrity": "sha512-1bUusGmcoRLYgMn6c1BLk1tOKUIFuTg8j+6N8lYlbMpDesnle+i3pGSagGNvwjaiLo4Y5gBibwctpPRmjrh4Og==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.4.0", + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@ethersproject/wordlists": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.4.0.tgz", + "integrity": "sha512-FemEkf6a+EBKEPxlzeVgUaVSodU7G0Na89jqKjmWMlDB0tomoU8RlEMgUvXyqtrg8N4cwpLh8nyRnm1Nay1isA==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.4.0", + "@ethersproject/hash": "^5.4.0", + "@ethersproject/logger": "^5.4.0", + "@ethersproject/properties": "^5.4.0", + "@ethersproject/strings": "^5.4.0" + } + }, + "@nomiclabs/hardhat-ethers": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-ethers/-/hardhat-ethers-2.0.2.tgz", + "integrity": "sha512-6quxWe8wwS4X5v3Au8q1jOvXYEPkS1Fh+cME5u6AwNdnI4uERvPlVjlgRWzpnb+Rrt1l/cEqiNRH9GlsBMSDQg==", + "dev": true, + "requires": {} + }, + "@nomiclabs/hardhat-waffle": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nomiclabs/hardhat-waffle/-/hardhat-waffle-2.0.1.tgz", + "integrity": "sha512-2YR2V5zTiztSH9n8BYWgtv3Q+EL0N5Ltm1PAr5z20uAY4SkkfylJ98CIqt18XFvxTD5x4K2wKBzddjV9ViDAZQ==", + "dev": true, + "requires": { + "@types/sinon-chai": "^3.2.3", + "@types/web3": "1.0.19" + } + }, + "@openzeppelin/contracts": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-3.4.1.tgz", + "integrity": "sha512-cUriqMauq1ylzP2TxePNdPqkwI7Le3Annh4K9rrpvKfSBB/bdW+Iu1ihBaTIABTAAJ85LmKL5SSPPL9ry8d1gQ==" + }, + "@resolver-engine/core": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/core/-/core-0.3.3.tgz", + "integrity": "sha512-eB8nEbKDJJBi5p5SrvrvILn4a0h42bKtbCTri3ZxCGt6UvoQyp7HnGOfki944bUjBSHKK3RvgfViHn+kqdXtnQ==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "is-url": "^1.2.4", + "request": "^2.85.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/fs/-/fs-0.3.3.tgz", + "integrity": "sha512-wQ9RhPUcny02Wm0IuJwYMyAG8fXVeKdmhm8xizNByD4ryZlx6PP6kRen+t/haF43cMfmaV7T3Cx6ChOdHEhFUQ==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/imports": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports/-/imports-0.3.3.tgz", + "integrity": "sha512-anHpS4wN4sRMwsAbMXhMfOD/y4a4Oo0Cw/5+rue7hSwGWsDOQaAU1ClK1OxjUC35/peazxEl8JaSRRS+Xb8t3Q==", + "dev": true, + "requires": { + "@resolver-engine/core": "^0.3.3", + "debug": "^3.1.0", + "hosted-git-info": "^2.6.0", + "path-browserify": "^1.0.0", + "url": "^0.11.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@resolver-engine/imports-fs": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@resolver-engine/imports-fs/-/imports-fs-0.3.3.tgz", + "integrity": "sha512-7Pjg/ZAZtxpeyCFlZR5zqYkz+Wdo84ugB5LApwriT8XFeQoLwGUj4tZFFvvCuxaNCcqZzCYbonJgmGObYBzyCA==", + "dev": true, + "requires": { + "@resolver-engine/fs": "^0.3.3", + "@resolver-engine/imports": "^0.3.3", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sinonjs/commons": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", + "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-7.1.2.tgz", + "integrity": "sha512-iQADsW4LBMISqZ6Ci1dupJL9pprqwcVFTcOsEmQOEhW+KLCVn/Y4Jrvg2k19fIHCp+iFprriYPTdRcQR8NbUPg==", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@solidity-parser/parser": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/@solidity-parser/parser/-/parser-0.11.1.tgz", + "integrity": "sha512-H8BSBoKE8EubJa0ONqecA2TviT3TnHeC4NpgnAHSUiuhZoQBfPB4L2P9bs8R6AoTW10Endvh3vc+fomVMIDIYQ==", + "dev": true + }, + "@typechain/ethers-v5": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@typechain/ethers-v5/-/ethers-v5-2.0.0.tgz", + "integrity": "sha512-0xdCkyGOzdqh4h5JSf+zoWx85IusEjDcPIwNEHP8mrWSnCae4rvrqB+/gtpdNfX7zjlFlZiMeePn2r63EI3Lrw==", + "dev": true, + "requires": {} + }, + "@types/abstract-leveldown": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/@types/abstract-leveldown/-/abstract-leveldown-5.0.2.tgz", + "integrity": "sha512-+jA1XXF3jsz+Z7FcuiNqgK53hTa/luglT2TyTpKPqoYbxVY+mCPF22Rm+q3KPBrMHJwNXFrTViHszBOfU4vftQ==", + "dev": true + }, + "@types/bn.js": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.0.tgz", + "integrity": "sha512-QSSVYj7pYFN49kW77o2s9xTCwZ8F2xLbjLLSEVh8D2F4JUhZtPAGOFLTD+ffqksBx/u4cE/KImFjyhqCjn/LIA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/chai": { + "version": "4.2.21", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.2.21.tgz", + "integrity": "sha512-yd+9qKmJxm496BOV9CMNaey8TWsikaZOwMRwPHQIjcOJM9oV+fi9ZMNw3JsVnbEEbo2gRTDnGEBv8pjyn67hNg==", + "dev": true + }, + "@types/level-errors": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/level-errors/-/level-errors-3.0.0.tgz", + "integrity": "sha512-/lMtoq/Cf/2DVOm6zE6ORyOM+3ZVm/BvzEZVxUhf6bgh8ZHglXlBqxbxSlJeVp8FCbD3IVvk/VbsaNmDjrQvqQ==", + "dev": true + }, + "@types/levelup": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@types/levelup/-/levelup-4.3.3.tgz", + "integrity": "sha512-K+OTIjJcZHVlZQN1HmU64VtrC0jC3dXWQozuEIR9zVvltIk90zaGPM2AgT+fIkChpzHhFE3YnvFLCbLtzAmexA==", + "dev": true, + "requires": { + "@types/abstract-leveldown": "*", + "@types/level-errors": "*", + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/mkdirp": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/mkdirp/-/mkdirp-0.5.2.tgz", + "integrity": "sha512-U5icWpv7YnZYGsN4/cmh3WD2onMY0aJIiTE6+51TwJCttdHvtCYmkBNOobHlXwrJRL0nkH9jH4kD+1FAdMN4Tg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.4.7.tgz", + "integrity": "sha512-aDDY54sst8sx47CWT6QQqIZp45yURq4dic0+HCYfYNcY5Ejlb/CLmFnRLfy3wQuYafOeh3lB/DAKaqRKBtcZmA==", + "dev": true + }, + "@types/node-fetch": { + "version": "2.5.12", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.12.tgz", + "integrity": "sha512-MKgC4dlq4kKNa/mYrwpKfzQMB5X3ee5U6fSprkKpToBqBmX4nFZL9cW5jl6sWn+xpRJ7ypWh2yyqqr8UUCstSw==", + "dev": true, + "requires": { + "@types/node": "*", + "form-data": "^3.0.0" + } + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-eI5Yrz3Qv4KPUa/nSIAi0h+qX0XyewOliug5F2QAtuRg6Kjg6jfmxe1GIwoIRhZspD1A0RP8ANrPwvEXXtRFog==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sinon": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.2.tgz", + "integrity": "sha512-BHn8Bpkapj8Wdfxvh2jWIUoaYB/9/XhsL0oOvBfRagJtKlSl9NWPcFOz2lRukI9szwGxFtYZCTejJSqsGDbdmw==", + "dev": true, + "requires": { + "@sinonjs/fake-timers": "^7.1.0" + } + }, + "@types/sinon-chai": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/sinon-chai/-/sinon-chai-3.2.5.tgz", + "integrity": "sha512-bKQqIpew7mmIGNRlxW6Zli/QVyc3zikpGzCa797B/tRnD9OtHvZ/ts8sYXV+Ilj9u3QRaUEM8xrjgd1gwm1BpQ==", + "dev": true, + "requires": { + "@types/chai": "*", + "@types/sinon": "*" + } + }, + "@types/underscore": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/@types/underscore/-/underscore-1.11.3.tgz", + "integrity": "sha512-Fl1TX1dapfXyDqFg2ic9M+vlXRktcPJrc4PR7sRc7sdVrjavg/JHlbUXBt8qWWqhJrmSqg3RNAkAPRiOYw6Ahw==", + "dev": true + }, + "@types/web3": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@types/web3/-/web3-1.0.19.tgz", + "integrity": "sha512-fhZ9DyvDYDwHZUp5/STa9XW2re0E8GxoioYJ4pEUZ13YHpApSagixj7IAdoYH5uAK+UalGq6Ml8LYzmgRA/q+A==", + "dev": true, + "requires": { + "@types/bn.js": "*", + "@types/underscore": "*" + } + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-leveldown": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.3.0.tgz", + "integrity": "sha512-TU5nlYgta8YrBMNpc9FwQzRbiXsj49gsALsXadbGHt9CROPzX5fB0rWDR5mtdpOOKa5XqRFpbj1QroPAoPzVjQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha1-4h3xCtbCBTKVvLuNq0Cwnb6ofk0=", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "dev": true, + "requires": { + "typical": "^2.6.1" + } + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", + "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.8.tgz", + "integrity": "sha512-Rl/1AWP4J/zRrk54hhlxH4drNxPJXYUaKffODVI53/dAsV4t9fBxyxYKAVPU1XBHxYwOWP9h9H0hM2MVw4YfJA==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + } + } + }, + "bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "blakejs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.1.1.tgz", + "integrity": "sha512-bLG6PHOCZJKNshTjGRBvET0vTciwQE6zFKOKKXPDJfwFBd4Ac0yBfPZqcGvGJap50l7ktvlpFqc2jGVaUgbJgg==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "dependencies": { + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + } + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", + "integrity": "sha1-YGSkD6dutDxyOrqe+PbhIW0QURo=", + "dev": true + }, + "buffer-xor": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-2.0.2.tgz", + "integrity": "sha512-eHslX0bin3GB+Lx2p7lEYRShRewuNZL3fUl4qlVJGGiwoPGftmt8JQgk2Y9Ji5/01TnVDo33E5b5O3vUB1HdqQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz", + "integrity": "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "command-line-args": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-4.0.7.tgz", + "integrity": "sha512-aUdPvQRAyBvQd2n7jXcsMDz68ckBJELXNzBybCHOibUWEg0mWTnaYCSRU8h9R+aNRSvDihJtssSRCiDRpLaezA==", + "dev": true, + "requires": { + "array-back": "^2.0.0", + "find-replace": "^1.0.3", + "typical": "^2.6.1" + } + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "dev": true + }, + "core-js-pure": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.16.0.tgz", + "integrity": "sha512-wzlhZNepF/QA9yvx3ePDgNGudU5KDB8lu/TRPKelYA/QtSnkS/cLl2W+TIdEX1FAFcBr0YpY7tPDlcmXJ7AyiQ==", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "crc-32": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.0.tgz", + "integrity": "sha512-1uBwHxF+Y/4yF5G48fwnKq6QsIXheor3ZLPT80yGBV1oEUwpPojlEhQbWKVw1VwcTQyMGHK1/XMmTjmlsmTTGA==", + "dev": true, + "requires": { + "exit-on-epipe": "~1.0.1", + "printj": "~1.1.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dev": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "deferred-leveldown": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", + "dev": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "dom-walk": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.2.tgz", + "integrity": "sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w==", + "dev": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "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" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encoding-down": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", + "dev": true, + "requires": { + "abstract-leveldown": "^6.2.1", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.4.tgz", + "integrity": "sha512-xjDAPJRxKc1uoTkdW8MEk7Fq/2bzz3YoCADYniDV7+KITCUdu9c90fj1aKI7nEZFZxRrHlDo3wtma/C6QkhlXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.11.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "dependencies": { + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "eth-ens-namehash": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", + "integrity": "sha1-IprEbsqG1S4MmR58sq74P/D2i88=", + "dev": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "eth-lib": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", + "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "dev": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "eth-sig-util": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/eth-sig-util/-/eth-sig-util-2.5.4.tgz", + "integrity": "sha512-aCMBwp8q/4wrW4QLsF/HYBOSA7TpLKmkVwP3pYQNkEEseW2Rr8Z5Uxc9/h6HX+OG3tuHo+2bINVSihIeBfym6A==", + "dev": true, + "requires": { + "ethereumjs-abi": "0.6.8", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-5.2.1.tgz", + "integrity": "sha512-v3kT+7zdyCm1HIqWlLNrHGqHGLpGYIhjeHxQjnDXjLT2FyGJDsd3LWMYUo7pAFRrk86CR3nUJfhC81CCoJNNGQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", + "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "dev": true, + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + } + } + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereum-waffle": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ethereum-waffle/-/ethereum-waffle-3.4.0.tgz", + "integrity": "sha512-ADBqZCkoSA5Isk486ntKJVjFEawIiC+3HxNqpJqONvh3YXBTNiRfXvJtGuAFLXPG91QaqkGqILEHANAo7j/olQ==", + "dev": true, + "requires": { + "@ethereum-waffle/chai": "^3.4.0", + "@ethereum-waffle/compiler": "^3.4.0", + "@ethereum-waffle/mock-contract": "^3.3.0", + "@ethereum-waffle/provider": "^3.4.0", + "ethers": "^5.0.1" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "ethereumjs-util": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.0.tgz", + "integrity": "sha512-kR+vhu++mUDARrsMMhsjjzPduRVAeundLGXucGRHF3B4oEltOUspfgCVco4kckucj3FMlLaZHUl9n7/kdmr6Tw==", + "dev": true, + "requires": { + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.4" + }, + "dependencies": { + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + } + } + }, + "ethers": { + "version": "5.4.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.4.2.tgz", + "integrity": "sha512-JcFcNWjULzhm4tMp5cZKnU45zqN/c7rqabIITiUiQzZuP7LcYSD4WAbADo4Ja6G2orU4d/PbhAWGHGtAKYrB4Q==", + "dev": true, + "requires": { + "@ethersproject/abi": "5.4.0", + "@ethersproject/abstract-provider": "5.4.0", + "@ethersproject/abstract-signer": "5.4.0", + "@ethersproject/address": "5.4.0", + "@ethersproject/base64": "5.4.0", + "@ethersproject/basex": "5.4.0", + "@ethersproject/bignumber": "5.4.1", + "@ethersproject/bytes": "5.4.0", + "@ethersproject/constants": "5.4.0", + "@ethersproject/contracts": "5.4.0", + "@ethersproject/hash": "5.4.0", + "@ethersproject/hdnode": "5.4.0", + "@ethersproject/json-wallets": "5.4.0", + "@ethersproject/keccak256": "5.4.0", + "@ethersproject/logger": "5.4.0", + "@ethersproject/networks": "5.4.1", + "@ethersproject/pbkdf2": "5.4.0", + "@ethersproject/properties": "5.4.0", + "@ethersproject/providers": "5.4.2", + "@ethersproject/random": "5.4.0", + "@ethersproject/rlp": "5.4.0", + "@ethersproject/sha2": "5.4.0", + "@ethersproject/signing-key": "5.4.0", + "@ethersproject/solidity": "5.4.0", + "@ethersproject/strings": "5.4.0", + "@ethersproject/transactions": "5.4.0", + "@ethersproject/units": "5.4.0", + "@ethersproject/wallet": "5.4.0", + "@ethersproject/web": "5.4.0", + "@ethersproject/wordlists": "5.4.0" + } + }, + "ethjs-unit": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", + "integrity": "sha1-xmWSHkduh7ziqdWIpv4EBbLEFpk=", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exit-on-epipe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/exit-on-epipe/-/exit-on-epipe-1.0.1.tgz", + "integrity": "sha512-h2z5mrROTxce56S+pnvAV890uu7ls7f1kEvVGJbw1OlFH3/mlJ5bkXu0KRyW94v37zzHPiUd55iLn3DA7TjWpw==", + "dev": true + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-replace": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-1.0.3.tgz", + "integrity": "sha1-uI5zZNLZyVlVnziMZmcNYTBEH6A=", + "dev": true, + "requires": { + "array-back": "^1.0.4", + "test-value": "^2.1.0" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "^2.6.0" + } + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "requires": { + "micromatch": "^4.0.2" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "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 + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "ganache-core": { + "version": "2.13.2", + "resolved": "https://registry.npmjs.org/ganache-core/-/ganache-core-2.13.2.tgz", + "integrity": "sha512-tIF5cR+ANQz0+3pHWxHjIwHqFXcVo0Mb+kcsNhglNFALcYo49aQpnS9dqHartqPfMFjiHh/qFoD3mYK0d/qGgw==", + "dev": true, + "requires": { + "abstract-leveldown": "3.0.0", + "async": "2.6.2", + "bip39": "2.5.0", + "cachedown": "1.0.0", + "clone": "2.1.2", + "debug": "3.2.6", + "encoding-down": "5.0.4", + "eth-sig-util": "3.0.0", + "ethereumjs-abi": "0.6.8", + "ethereumjs-account": "3.0.0", + "ethereumjs-block": "2.2.2", + "ethereumjs-common": "1.5.0", + "ethereumjs-tx": "2.1.2", + "ethereumjs-util": "6.2.1", + "ethereumjs-vm": "4.2.0", + "ethereumjs-wallet": "0.6.5", + "heap": "0.2.6", + "keccak": "3.0.1", + "level-sublevel": "6.6.4", + "levelup": "3.1.1", + "lodash": "4.17.20", + "lru-cache": "5.1.1", + "merkle-patricia-tree": "3.0.0", + "patch-package": "6.2.2", + "seedrandom": "3.0.1", + "source-map-support": "0.5.12", + "tmp": "0.1.0", + "web3": "1.2.11", + "web3-provider-engine": "14.2.1", + "websocket": "1.0.32" + }, + "dependencies": { + "@ethersproject/abi": { + "version": "5.0.0-beta.153", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/address": ">=5.0.0-beta.128", + "@ethersproject/bignumber": ">=5.0.0-beta.130", + "@ethersproject/bytes": ">=5.0.0-beta.129", + "@ethersproject/constants": ">=5.0.0-beta.128", + "@ethersproject/hash": ">=5.0.0-beta.128", + "@ethersproject/keccak256": ">=5.0.0-beta.127", + "@ethersproject/logger": ">=5.0.0-beta.129", + "@ethersproject/properties": ">=5.0.0-beta.131", + "@ethersproject/strings": ">=5.0.0-beta.130" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.0.8", + "dev": true, + "optional": true, + "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.10", + "dev": true, + "optional": true, + "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.9", + "dev": true, + "optional": true, + "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.7", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9" + } + }, + "@ethersproject/bignumber": { + "version": "5.0.13", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "bn.js": "^4.4.0" + } + }, + "@ethersproject/bytes": { + "version": "5.0.9", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/constants": { + "version": "5.0.8", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bignumber": "^5.0.13" + } + }, + "@ethersproject/hash": { + "version": "5.0.10", + "dev": true, + "optional": true, + "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/keccak256": { + "version": "5.0.7", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "js-sha3": "0.5.7" + } + }, + "@ethersproject/logger": { + "version": "5.0.8", + "dev": true, + "optional": true + }, + "@ethersproject/networks": { + "version": "5.0.7", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/properties": { + "version": "5.0.7", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/rlp": { + "version": "5.0.7", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/signing-key": { + "version": "5.0.8", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/logger": "^5.0.8", + "@ethersproject/properties": "^5.0.7", + "elliptic": "6.5.3" + } + }, + "@ethersproject/strings": { + "version": "5.0.8", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/bytes": "^5.0.9", + "@ethersproject/constants": "^5.0.8", + "@ethersproject/logger": "^5.0.8" + } + }, + "@ethersproject/transactions": { + "version": "5.0.9", + "dev": true, + "optional": true, + "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/web": { + "version": "5.0.12", + "dev": true, + "optional": true, + "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" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "dev": true, + "optional": true + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "dev": true, + "optional": true, + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/bn.js": { + "version": "4.11.6", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/node": { + "version": "14.14.20", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.1", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true + }, + "abstract-leveldown": { + "version": "3.0.0", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "accepts": { + "version": "1.3.7", + "dev": true, + "optional": true, + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "aes-js": { + "version": "3.1.2", + "dev": true, + "optional": true + }, + "ajv": { + "version": "6.12.6", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "dev": true + }, + "array-flatten": { + "version": "1.1.1", + "dev": true, + "optional": true + }, + "array-unique": { + "version": "0.3.2", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "dev": true + }, + "async": { + "version": "2.6.2", + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "async-limiter": { + "version": "1.0.1", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "dev": true + }, + "atob": { + "version": "2.1.2", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "dev": true + }, + "babel-code-frame": { + "version": "6.26.0", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "babel-core": { + "version": "6.26.3", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "slash": { + "version": "1.0.0", + "dev": true + } + } + }, + "babel-generator": { + "version": "6.26.1", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-messages": { + "version": "6.23.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "babel-register": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "source-map-support": { + "version": "0.4.18", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + } + }, + "babel-template": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "dev": true + } + } + }, + "babelify": { + "version": "7.3.0", + "dev": true, + "requires": { + "babel-core": "^6.0.14", + "object-assign": "^4.0.0" + } + }, + "babylon": { + "version": "6.18.0", + "dev": true + }, + "backoff": { + "version": "2.5.0", + "dev": true, + "requires": { + "precond": "0.2" + } + }, + "balanced-match": { + "version": "1.0.0", + "dev": true + }, + "base": { + "version": "0.11.2", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "base-x": { + "version": "3.0.8", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "dev": true + } + } + }, + "bignumber.js": { + "version": "9.0.1", + "dev": true, + "optional": true + }, + "bip39": { + "version": "2.5.0", + "dev": true, + "requires": { + "create-hash": "^1.1.0", + "pbkdf2": "^3.0.9", + "randombytes": "^2.0.1", + "safe-buffer": "^5.0.1", + "unorm": "^1.3.3" + } + }, + "blakejs": { + "version": "1.1.0", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "dev": true, + "optional": true + }, + "bn.js": { + "version": "4.11.9", + "dev": true + }, + "body-parser": { + "version": "1.19.0", + "dev": true, + "optional": true, + "requires": { + "bytes": "3.1.0", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.7.0", + "raw-body": "2.4.0", + "type-is": "~1.6.17" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.7.0", + "dev": true, + "optional": true + } + } + }, + "brace-expansion": { + "version": "1.1.11", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "dev": true, + "optional": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "dev": true, + "optional": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "dev": true, + "optional": true + } + } + }, + "browserify-sign": { + "version": "4.2.1", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "dev": true, + "optional": true + }, + "readable-stream": { + "version": "3.6.0", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserslist": { + "version": "3.2.8", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "bs58": { + "version": "4.0.1", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "5.7.1", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.1", + "dev": true + }, + "buffer-to-arraybuffer": { + "version": "0.0.5", + "dev": true, + "optional": true + }, + "buffer-xor": { + "version": "1.0.3", + "dev": true + }, + "bufferutil": { + "version": "4.0.3", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "bytes": { + "version": "3.1.0", + "dev": true, + "optional": true + }, + "bytewise": { + "version": "1.1.0", + "dev": true, + "requires": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "bytewise-core": { + "version": "1.2.3", + "dev": true, + "requires": { + "typewise-core": "^1.2" + } + }, + "cache-base": { + "version": "1.0.1", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "cacheable-request": { + "version": "6.1.0", + "dev": true, + "optional": true, + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "lowercase-keys": { + "version": "2.0.0", + "dev": true, + "optional": true + } + } + }, + "cachedown": { + "version": "1.0.0", + "dev": true, + "requires": { + "abstract-leveldown": "^2.4.1", + "lru-cache": "^3.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "lru-cache": { + "version": "3.2.0", + "dev": true, + "requires": { + "pseudomap": "^1.0.1" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caniuse-lite": { + "version": "1.0.30001174", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "checkpoint-store": { + "version": "1.1.0", + "dev": true, + "requires": { + "functional-red-black-tree": "^1.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "dev": true, + "optional": true + }, + "ci-info": { + "version": "2.0.0", + "dev": true + }, + "cids": { + "version": "0.7.5", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.5.0", + "class-is": "^1.1.0", + "multibase": "~0.6.0", + "multicodec": "^1.0.0", + "multihashes": "~0.4.15" + }, + "dependencies": { + "multicodec": { + "version": "1.0.4", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.6.0", + "varint": "^5.0.0" + } + } + } + }, + "cipher-base": { + "version": "1.0.4", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "class-is": { + "version": "1.1.0", + "dev": true, + "optional": true + }, + "class-utils": { + "version": "0.3.6", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "clone": { + "version": "2.1.2", + "dev": true + }, + "clone-response": { + "version": "1.0.2", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "collection-visit": { + "version": "1.0.0", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "component-emitter": { + "version": "1.3.0", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "content-disposition": { + "version": "0.5.3", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.1.2" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true, + "optional": true + } + } + }, + "content-hash": { + "version": "2.5.2", + "dev": true, + "optional": true, + "requires": { + "cids": "^0.7.1", + "multicodec": "^0.5.5", + "multihashes": "^0.4.15" + } + }, + "content-type": { + "version": "1.0.4", + "dev": true, + "optional": true + }, + "convert-source-map": { + "version": "1.7.0", + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "cookie": { + "version": "0.4.0", + "dev": true, + "optional": true + }, + "cookie-signature": { + "version": "1.0.6", + "dev": true, + "optional": true + }, + "cookiejar": { + "version": "2.1.2", + "dev": true, + "optional": true + }, + "copy-descriptor": { + "version": "0.1.1", + "dev": true + }, + "core-js": { + "version": "2.6.12", + "dev": true + }, + "core-js-pure": { + "version": "3.8.2", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "dev": true + }, + "cors": { + "version": "2.8.5", + "dev": true, + "optional": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "create-ecdh": { + "version": "4.0.4", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "create-hash": { + "version": "1.2.0", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-fetch": { + "version": "2.2.3", + "dev": true, + "requires": { + "node-fetch": "2.1.2", + "whatwg-fetch": "2.0.4" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "dev": true, + "optional": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "d": { + "version": "1.0.1", + "dev": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "3.2.6", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decode-uri-component": { + "version": "0.2.0", + "dev": true + }, + "decompress-response": { + "version": "3.3.0", + "dev": true, + "optional": true, + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "dev": true, + "optional": true + }, + "deferred-leveldown": { + "version": "4.0.2", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "inherits": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "define-properties": { + "version": "1.1.3", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + } + }, + "defined": { + "version": "1.0.0", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "dev": true + }, + "depd": { + "version": "1.1.2", + "dev": true, + "optional": true + }, + "des.js": { + "version": "1.0.1", + "dev": true, + "optional": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "dev": true, + "optional": true + }, + "detect-indent": { + "version": "4.0.0", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dom-walk": { + "version": "0.1.2", + "dev": true + }, + "dotignore": { + "version": "0.1.2", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "duplexer3": { + "version": "0.1.4", + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true, + "optional": true + }, + "electron-to-chromium": { + "version": "1.3.636", + "dev": true + }, + "elliptic": { + "version": "6.5.3", + "dev": true, + "requires": { + "bn.js": "^4.4.0", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.0" + } + }, + "encodeurl": { + "version": "1.0.2", + "dev": true, + "optional": true + }, + "encoding": { + "version": "0.1.13", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.2", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "encoding-down": { + "version": "5.0.4", + "dev": true, + "requires": { + "abstract-leveldown": "^5.0.0", + "inherits": "^2.0.3", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "end-of-stream": { + "version": "1.4.4", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "errno": { + "version": "0.1.8", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "es-abstract": { + "version": "1.18.0-next.1", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.53", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-symbol": { + "version": "3.1.3", + "dev": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escape-html": { + "version": "1.0.3", + "dev": true, + "optional": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "dev": true + }, + "etag": { + "version": "1.8.1", + "dev": true, + "optional": true + }, + "eth-block-tracker": { + "version": "3.0.1", + "dev": true, + "requires": { + "eth-query": "^2.1.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.3", + "ethjs-util": "^0.1.3", + "json-rpc-engine": "^3.6.0", + "pify": "^2.3.0", + "tape": "^4.6.3" + }, + "dependencies": { + "ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "pify": { + "version": "2.3.0", + "dev": true + } + } + }, + "eth-ens-namehash": { + "version": "2.0.8", + "dev": true, + "optional": true, + "requires": { + "idna-uts46-hx": "^2.3.1", + "js-sha3": "^0.5.7" + } + }, + "eth-json-rpc-infura": { + "version": "3.2.1", + "dev": true, + "requires": { + "cross-fetch": "^2.1.1", + "eth-json-rpc-middleware": "^1.5.0", + "json-rpc-engine": "^3.4.0", + "json-rpc-error": "^2.0.0" + } + }, + "eth-json-rpc-middleware": { + "version": "1.6.0", + "dev": true, + "requires": { + "async": "^2.5.0", + "eth-query": "^2.1.2", + "eth-tx-summary": "^3.1.2", + "ethereumjs-block": "^1.6.0", + "ethereumjs-tx": "^1.3.3", + "ethereumjs-util": "^5.1.2", + "ethereumjs-vm": "^2.1.0", + "fetch-ponyfill": "^4.0.0", + "json-rpc-engine": "^3.6.0", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "tape": "^4.6.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "semver": { + "version": "5.4.1", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "eth-lib": { + "version": "0.1.29", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "nano-json-stream-parser": "^0.1.2", + "servify": "^0.1.12", + "ws": "^3.0.0", + "xhr-request-promise": "^0.1.2" + } + }, + "eth-query": { + "version": "2.1.2", + "dev": true, + "requires": { + "json-rpc-random-id": "^1.0.0", + "xtend": "^4.0.1" + } + }, + "eth-sig-util": { + "version": "3.0.0", + "dev": true, + "requires": { + "buffer": "^5.2.1", + "elliptic": "^6.4.0", + "ethereumjs-abi": "0.6.5", + "ethereumjs-util": "^5.1.1", + "tweetnacl": "^1.0.0", + "tweetnacl-util": "^0.15.0" + }, + "dependencies": { + "ethereumjs-abi": { + "version": "0.6.5", + "dev": true, + "requires": { + "bn.js": "^4.10.0", + "ethereumjs-util": "^4.3.0" + }, + "dependencies": { + "ethereumjs-util": { + "version": "4.5.1", + "dev": true, + "requires": { + "bn.js": "^4.8.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.0.0" + } + } + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "eth-tx-summary": { + "version": "3.2.4", + "dev": true, + "requires": { + "async": "^2.1.2", + "clone": "^2.0.0", + "concat-stream": "^1.5.1", + "end-of-stream": "^1.1.0", + "eth-query": "^2.0.2", + "ethereumjs-block": "^1.4.1", + "ethereumjs-tx": "^1.1.1", + "ethereumjs-util": "^5.0.1", + "ethereumjs-vm": "^2.6.0", + "through2": "^2.0.3" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "semver": { + "version": "5.4.1", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "ethashjs": { + "version": "0.0.8", + "dev": true, + "requires": { + "async": "^2.1.2", + "buffer-xor": "^2.0.1", + "ethereumjs-util": "^7.0.2", + "miller-rabin": "^4.0.0" + }, + "dependencies": { + "bn.js": { + "version": "5.1.3", + "dev": true + }, + "buffer-xor": { + "version": "2.0.2", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-util": { + "version": "7.0.7", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.4" + } + } + } + }, + "ethereum-bloom-filters": { + "version": "1.0.7", + "dev": true, + "optional": true, + "requires": { + "js-sha3": "^0.8.0" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "dev": true, + "optional": true + } + } + }, + "ethereum-common": { + "version": "0.0.18", + "dev": true + }, + "ethereum-cryptography": { + "version": "0.1.3", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-account": { + "version": "3.0.0", + "dev": true, + "requires": { + "ethereumjs-util": "^6.0.0", + "rlp": "^2.2.1", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "isarray": { + "version": "0.0.1", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "semver": { + "version": "5.4.1", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "ethereumjs-blockchain": { + "version": "4.0.4", + "dev": true, + "requires": { + "async": "^2.6.1", + "ethashjs": "~0.0.7", + "ethereumjs-block": "~2.2.2", + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.1.0", + "flow-stoplight": "^1.0.0", + "level-mem": "^3.0.1", + "lru-cache": "^5.1.1", + "rlp": "^2.2.2", + "semaphore": "^1.1.0" + } + }, + "ethereumjs-common": { + "version": "1.5.0", + "dev": true + }, + "ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "ethereumjs-vm": { + "version": "4.2.0", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "core-js-pure": "^3.0.1", + "ethereumjs-account": "^3.0.0", + "ethereumjs-block": "^2.2.2", + "ethereumjs-blockchain": "^4.0.3", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.2", + "ethereumjs-util": "^6.2.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1", + "util.promisify": "^1.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "isarray": { + "version": "0.0.1", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "dev": true + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "object-keys": { + "version": "0.4.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "semver": { + "version": "5.4.1", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + } + } + }, + "ethereumjs-wallet": { + "version": "0.6.5", + "dev": true, + "optional": true, + "requires": { + "aes-js": "^3.1.1", + "bs58check": "^2.1.2", + "ethereum-cryptography": "^0.1.3", + "ethereumjs-util": "^6.0.0", + "randombytes": "^2.0.6", + "safe-buffer": "^5.1.2", + "scryptsy": "^1.2.1", + "utf8": "^3.0.0", + "uuid": "^3.3.2" + } + }, + "ethjs-unit": { + "version": "0.1.6", + "dev": true, + "optional": true, + "requires": { + "bn.js": "4.11.6", + "number-to-bn": "1.7.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "dev": true, + "optional": true + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "eventemitter3": { + "version": "4.0.4", + "dev": true, + "optional": true + }, + "events": { + "version": "3.2.0", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "expand-brackets": { + "version": "2.1.4", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "express": { + "version": "4.17.1", + "dev": true, + "optional": true, + "requires": { + "accepts": "~1.3.7", + "array-flatten": "1.1.1", + "body-parser": "1.19.0", + "content-disposition": "0.5.3", + "content-type": "~1.0.4", + "cookie": "0.4.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "~1.1.2", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.1.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.5", + "qs": "6.7.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.1.2", + "send": "0.17.1", + "serve-static": "1.14.1", + "setprototypeof": "1.1.1", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true, + "optional": true + }, + "qs": { + "version": "6.7.0", + "dev": true, + "optional": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true, + "optional": true + } + } + }, + "ext": { + "version": "1.4.0", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.1.0", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + } + }, + "extglob": { + "version": "2.0.4", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "dev": true + }, + "fake-merkle-patricia-tree": { + "version": "1.0.1", + "dev": true, + "requires": { + "checkpoint-store": "^1.1.0" + } + }, + "fast-deep-equal": { + "version": "3.1.3", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "dev": true + }, + "fetch-ponyfill": { + "version": "4.1.0", + "dev": true, + "requires": { + "node-fetch": "~1.7.1" + }, + "dependencies": { + "is-stream": { + "version": "1.1.0", + "dev": true + }, + "node-fetch": { + "version": "1.7.3", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "is-stream": "^1.0.1" + } + } + } + }, + "finalhandler": { + "version": "1.1.2", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true, + "optional": true + } + } + }, + "find-yarn-workspace-root": { + "version": "1.2.1", + "dev": true, + "requires": { + "fs-extra": "^4.0.3", + "micromatch": "^3.1.4" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fs-extra": { + "version": "4.0.3", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "flow-stoplight": { + "version": "1.0.0", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "forwarded": { + "version": "0.1.2", + "dev": true, + "optional": true + }, + "fragment-cache": { + "version": "0.2.1", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "dev": true, + "optional": true + }, + "fs-extra": { + "version": "7.0.1", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "dev": true + }, + "get-intrinsic": { + "version": "1.0.2", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "5.2.0", + "dev": true, + "optional": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.3", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global": { + "version": "4.4.0", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "got": { + "version": "9.6.0", + "dev": true, + "optional": true, + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "dependencies": { + "get-stream": { + "version": "4.1.0", + "dev": true, + "optional": true, + "requires": { + "pump": "^3.0.0" + } + } + } + }, + "graceful-fs": { + "version": "4.2.4", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "dev": true + }, + "has-symbol-support-x": { + "version": "1.4.2", + "dev": true, + "optional": true + }, + "has-symbols": { + "version": "1.0.1", + "dev": true + }, + "has-to-string-tag-x": { + "version": "1.4.1", + "dev": true, + "optional": true, + "requires": { + "has-symbol-support-x": "^1.4.1" + } + }, + "has-value": { + "version": "1.0.0", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "heap": { + "version": "0.2.6", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "dev": true, + "optional": true + }, + "http-errors": { + "version": "1.7.2", + "dev": true, + "optional": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "dev": true, + "optional": true + } + } + }, + "http-https": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "http-signature": { + "version": "1.2.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "dev": true, + "optional": true, + "requires": { + "punycode": "2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.0", + "dev": true, + "optional": true + } + } + }, + "ieee754": { + "version": "1.2.1", + "dev": true + }, + "immediate": { + "version": "3.2.3", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "ipaddr.js": { + "version": "1.9.1", + "dev": true, + "optional": true + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-arguments": { + "version": "1.1.0", + "dev": true, + "requires": { + "call-bind": "^1.0.0" + } + }, + "is-callable": { + "version": "1.2.2", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-date-object": { + "version": "1.0.2", + "dev": true + }, + "is-descriptor": { + "version": "1.0.2", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extendable": { + "version": "1.0.1", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + }, + "is-finite": { + "version": "1.1.0", + "dev": true + }, + "is-fn": { + "version": "1.0.0", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "dev": true + }, + "is-hex-prefixed": { + "version": "1.0.0", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "dev": true + }, + "is-object": { + "version": "1.0.2", + "dev": true, + "optional": true + }, + "is-plain-obj": { + "version": "1.1.0", + "dev": true, + "optional": true + }, + "is-plain-object": { + "version": "2.0.4", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-retry-allowed": { + "version": "1.2.0", + "dev": true, + "optional": true + }, + "is-symbol": { + "version": "1.0.3", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "isurl": { + "version": "1.0.0", + "dev": true, + "optional": true, + "requires": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + } + }, + "js-sha3": { + "version": "0.5.7", + "dev": true, + "optional": true + }, + "js-tokens": { + "version": "4.0.0", + "dev": true + }, + "jsbn": { + "version": "0.1.1", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "dev": true, + "optional": true + }, + "json-rpc-engine": { + "version": "3.8.0", + "dev": true, + "requires": { + "async": "^2.0.1", + "babel-preset-env": "^1.7.0", + "babelify": "^7.3.0", + "json-rpc-error": "^2.0.0", + "promise-to-callback": "^1.0.0", + "safe-event-emitter": "^1.0.1" + } + }, + "json-rpc-error": { + "version": "2.0.0", + "dev": true, + "requires": { + "inherits": "^2.0.1" + } + }, + "json-rpc-random-id": { + "version": "1.0.1", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "dev": true, + "requires": { + "jsonify": "~0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonify": { + "version": "0.0.0", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "keyv": { + "version": "3.1.0", + "dev": true, + "optional": true, + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "klaw-sync": { + "version": "6.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "level-codec": { + "version": "9.0.2", + "dev": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "level-errors": { + "version": "2.0.1", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "2.0.3", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.5", + "xtend": "^4.0.0" + } + }, + "level-mem": { + "version": "3.0.1", + "dev": true, + "requires": { + "level-packager": "~4.0.0", + "memdown": "~3.0.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "5.0.0", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "3.0.0", + "dev": true, + "requires": { + "abstract-leveldown": "~5.0.0", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "level-packager": { + "version": "4.0.1", + "dev": true, + "requires": { + "encoding-down": "~5.0.0", + "levelup": "^3.0.0" + } + }, + "level-post": { + "version": "1.0.7", + "dev": true, + "requires": { + "ltgt": "^2.1.2" + } + }, + "level-sublevel": { + "version": "6.6.4", + "dev": true, + "requires": { + "bytewise": "~1.1.0", + "level-codec": "^9.0.0", + "level-errors": "^2.0.0", + "level-iterator-stream": "^2.0.3", + "ltgt": "~2.1.1", + "pull-defer": "^0.2.2", + "pull-level": "^2.0.3", + "pull-stream": "^3.6.8", + "typewiselite": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "level-ws": { + "version": "1.0.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.2.8", + "xtend": "^4.0.1" + } + }, + "levelup": { + "version": "3.1.1", + "dev": true, + "requires": { + "deferred-leveldown": "~4.0.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~3.0.0", + "xtend": "~4.0.0" + }, + "dependencies": { + "level-iterator-stream": { + "version": "3.0.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "xtend": "^4.0.0" + } + } + } + }, + "lodash": { + "version": "4.17.20", + "dev": true + }, + "looper": { + "version": "2.0.0", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "lru-cache": { + "version": "5.1.1", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ltgt": { + "version": "2.1.3", + "dev": true + }, + "map-cache": { + "version": "0.2.2", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "md5.js": { + "version": "1.3.5", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "media-typer": { + "version": "0.3.0", + "dev": true, + "optional": true + }, + "merge-descriptors": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "merkle-patricia-tree": { + "version": "3.0.0", + "dev": true, + "requires": { + "async": "^2.6.1", + "ethereumjs-util": "^5.2.0", + "level-mem": "^3.0.1", + "level-ws": "^1.0.0", + "readable-stream": "^3.0.6", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "methods": { + "version": "1.1.2", + "dev": true, + "optional": true + }, + "miller-rabin": { + "version": "4.0.1", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "version": "1.6.0", + "dev": true, + "optional": true + }, + "mime-db": { + "version": "1.45.0", + "dev": true + }, + "mime-types": { + "version": "2.1.28", + "dev": true, + "requires": { + "mime-db": "1.45.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "min-document": { + "version": "2.19.0", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "dev": true + }, + "minizlib": { + "version": "1.3.3", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + }, + "dependencies": { + "minipass": { + "version": "2.9.0", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "mixin-deep": { + "version": "1.3.2", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + } + }, + "mkdirp": { + "version": "0.5.5", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "dev": true, + "optional": true, + "requires": { + "mkdirp": "*" + } + }, + "mock-fs": { + "version": "4.13.0", + "dev": true, + "optional": true + }, + "ms": { + "version": "2.1.3", + "dev": true + }, + "multibase": { + "version": "0.6.1", + "dev": true, + "optional": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + }, + "multicodec": { + "version": "0.5.7", + "dev": true, + "optional": true, + "requires": { + "varint": "^5.0.0" + } + }, + "multihashes": { + "version": "0.4.21", + "dev": true, + "optional": true, + "requires": { + "buffer": "^5.5.0", + "multibase": "^0.7.0", + "varint": "^5.0.0" + }, + "dependencies": { + "multibase": { + "version": "0.7.0", + "dev": true, + "optional": true, + "requires": { + "base-x": "^3.0.8", + "buffer": "^5.5.0" + } + } + } + }, + "nano-json-stream-parser": { + "version": "0.1.2", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "negotiator": { + "version": "0.6.2", + "dev": true, + "optional": true + }, + "next-tick": { + "version": "1.0.0", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "bundled": true, + "dev": true + }, + "node-fetch": { + "version": "2.1.2", + "dev": true + }, + "node-gyp-build": { + "version": "4.2.3", + "bundled": true, + "dev": true + }, + "normalize-url": { + "version": "4.5.0", + "dev": true, + "optional": true + }, + "number-to-bn": { + "version": "1.7.0", + "dev": true, + "optional": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "dev": true, + "optional": true + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.9.0", + "dev": true + }, + "object-is": { + "version": "1.1.4", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.2", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.1", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "oboe": { + "version": "2.1.4", + "dev": true, + "optional": true, + "requires": { + "http-https": "^1.0.0" + } + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "optional": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "dev": true + }, + "os-tmpdir": { + "version": "1.0.2", + "dev": true + }, + "p-cancelable": { + "version": "1.1.0", + "dev": true, + "optional": true + }, + "p-timeout": { + "version": "1.2.1", + "dev": true, + "optional": true, + "requires": { + "p-finally": "^1.0.0" + }, + "dependencies": { + "p-finally": { + "version": "1.0.0", + "dev": true, + "optional": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "dev": true, + "optional": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-headers": { + "version": "2.0.3", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "dev": true, + "optional": true + }, + "pascalcase": { + "version": "0.1.1", + "dev": true + }, + "patch-package": { + "version": "6.2.2", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^1.2.1", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "dev": true + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "dev": true + }, + "slash": { + "version": "2.0.0", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "path-is-absolute": { + "version": "1.0.1", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "dev": true, + "optional": true + }, + "pbkdf2": { + "version": "3.1.1", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "dev": true + }, + "posix-character-classes": { + "version": "0.1.1", + "dev": true + }, + "precond": { + "version": "0.2.3", + "dev": true + }, + "prepend-http": { + "version": "2.0.0", + "dev": true, + "optional": true + }, + "private": { + "version": "0.1.8", + "dev": true + }, + "process": { + "version": "0.11.10", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "dev": true + }, + "promise-to-callback": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-fn": "^1.0.0", + "set-immediate-shim": "^1.0.1" + } + }, + "proxy-addr": { + "version": "2.0.6", + "dev": true, + "optional": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.1" + } + }, + "prr": { + "version": "1.0.1", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "dev": true + }, + "psl": { + "version": "1.8.0", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "pull-cat": { + "version": "1.1.11", + "dev": true + }, + "pull-defer": { + "version": "0.2.3", + "dev": true + }, + "pull-level": { + "version": "2.0.4", + "dev": true, + "requires": { + "level-post": "^1.0.7", + "pull-cat": "^1.1.9", + "pull-live": "^1.0.1", + "pull-pushable": "^2.0.0", + "pull-stream": "^3.4.0", + "pull-window": "^2.1.4", + "stream-to-pull-stream": "^1.7.1" + } + }, + "pull-live": { + "version": "1.0.1", + "dev": true, + "requires": { + "pull-cat": "^1.1.9", + "pull-stream": "^3.4.0" + } + }, + "pull-pushable": { + "version": "2.2.0", + "dev": true + }, + "pull-stream": { + "version": "3.6.14", + "dev": true + }, + "pull-window": { + "version": "2.1.4", + "dev": true, + "requires": { + "looper": "^2.0.0" + } + }, + "pump": { + "version": "3.0.0", + "dev": true, + "optional": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.1.1", + "dev": true + }, + "qs": { + "version": "6.5.2", + "dev": true + }, + "query-string": { + "version": "5.1.1", + "dev": true, + "optional": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "dev": true, + "optional": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true, + "optional": true + }, + "raw-body": { + "version": "2.4.0", + "dev": true, + "optional": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "regenerate": { + "version": "1.4.2", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "dev": true + }, + "regenerator-transform": { + "version": "0.10.1", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + }, + "regex-not": { + "version": "1.0.2", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.3.0", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.17.7", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "regexpu-core": { + "version": "2.0.0", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "dev": true + } + } + }, + "repeat-element": { + "version": "1.1.3", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "resolve-url": { + "version": "0.2.1", + "dev": true + }, + "responselike": { + "version": "1.0.2", + "dev": true, + "optional": true, + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "resumer": { + "version": "0.0.0", + "dev": true, + "requires": { + "through": "~2.3.4" + } + }, + "ret": { + "version": "0.1.15", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "dev": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "rustbn.js": { + "version": "0.2.0", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "dev": true + }, + "safe-event-emitter": { + "version": "1.0.1", + "dev": true, + "requires": { + "events": "^3.0.0" + } + }, + "safe-regex": { + "version": "1.1.0", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "dev": true + }, + "scryptsy": { + "version": "1.2.1", + "dev": true, + "optional": true, + "requires": { + "pbkdf2": "^3.0.3" + } + }, + "secp256k1": { + "version": "4.0.2", + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "seedrandom": { + "version": "3.0.1", + "dev": true + }, + "semaphore": { + "version": "1.1.0", + "dev": true + }, + "send": { + "version": "0.17.1", + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.7.2", + "mime": "1.6.0", + "ms": "2.1.1", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "dev": true, + "optional": true + } + } + }, + "ms": { + "version": "2.1.1", + "dev": true, + "optional": true + } + } + }, + "serve-static": { + "version": "1.14.1", + "dev": true, + "optional": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "servify": { + "version": "0.1.12", + "dev": true, + "optional": true, + "requires": { + "body-parser": "^1.16.0", + "cors": "^2.8.1", + "express": "^4.14.0", + "request": "^2.79.0", + "xhr": "^2.3.3" + } + }, + "set-immediate-shim": { + "version": "1.0.1", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + } + } + }, + "setimmediate": { + "version": "1.0.5", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "dev": true, + "optional": true + }, + "sha.js": { + "version": "2.4.11", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "simple-concat": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "simple-get": { + "version": "2.8.1", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "dev": true + }, + "kind-of": { + "version": "5.1.0", + "dev": true + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.5.12", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "source-map-url": { + "version": "0.4.0", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sshpk": { + "version": "1.16.1", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "is-data-descriptor": { + "version": "0.1.4", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "dev": true, + "optional": true + }, + "stream-to-pull-stream": { + "version": "1.7.3", + "dev": true, + "requires": { + "looper": "^3.0.0", + "pull-stream": "^3.2.3" + }, + "dependencies": { + "looper": { + "version": "3.0.0", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "dev": true, + "optional": true + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true + } + } + }, + "string.prototype.trim": { + "version": "1.2.3", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.3", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.3", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "swarm-js": { + "version": "0.1.40", + "dev": true, + "optional": true, + "requires": { + "bluebird": "^3.5.0", + "buffer": "^5.0.5", + "eth-lib": "^0.1.26", + "fs-extra": "^4.0.2", + "got": "^7.1.0", + "mime-types": "^2.1.16", + "mkdirp-promise": "^5.0.1", + "mock-fs": "^4.1.0", + "setimmediate": "^1.0.5", + "tar": "^4.0.2", + "xhr-request": "^1.0.1" + }, + "dependencies": { + "fs-extra": { + "version": "4.0.3", + "dev": true, + "optional": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "3.0.0", + "dev": true, + "optional": true + }, + "got": { + "version": "7.1.0", + "dev": true, + "optional": true, + "requires": { + "decompress-response": "^3.2.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "is-plain-obj": "^1.1.0", + "is-retry-allowed": "^1.0.0", + "is-stream": "^1.0.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "p-cancelable": "^0.3.0", + "p-timeout": "^1.1.1", + "safe-buffer": "^5.0.1", + "timed-out": "^4.0.0", + "url-parse-lax": "^1.0.0", + "url-to-options": "^1.0.1" + } + }, + "is-stream": { + "version": "1.1.0", + "dev": true, + "optional": true + }, + "p-cancelable": { + "version": "0.3.0", + "dev": true, + "optional": true + }, + "prepend-http": { + "version": "1.0.4", + "dev": true, + "optional": true + }, + "url-parse-lax": { + "version": "1.0.0", + "dev": true, + "optional": true, + "requires": { + "prepend-http": "^1.0.1" + } + } + } + }, + "tape": { + "version": "4.13.3", + "dev": true, + "requires": { + "deep-equal": "~1.1.1", + "defined": "~1.0.0", + "dotignore": "~0.1.2", + "for-each": "~0.3.3", + "function-bind": "~1.1.1", + "glob": "~7.1.6", + "has": "~1.0.3", + "inherits": "~2.0.4", + "is-regex": "~1.0.5", + "minimist": "~1.2.5", + "object-inspect": "~1.7.0", + "resolve": "~1.17.0", + "resumer": "~0.0.0", + "string.prototype.trim": "~1.2.1", + "through": "~2.3.8" + }, + "dependencies": { + "glob": { + "version": "7.1.6", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "is-regex": { + "version": "1.0.5", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "object-inspect": { + "version": "1.7.0", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + } + } + }, + "tar": { + "version": "4.4.13", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + }, + "dependencies": { + "fs-minipass": { + "version": "1.2.7", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "minipass": { + "version": "2.9.0", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + } + } + }, + "through": { + "version": "2.3.8", + "dev": true + }, + "through2": { + "version": "2.0.5", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "timed-out": { + "version": "4.0.1", + "dev": true, + "optional": true + }, + "tmp": { + "version": "0.1.0", + "dev": true, + "requires": { + "rimraf": "^2.6.3" + } + }, + "to-object-path": { + "version": "0.3.0", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "is-buffer": { + "version": "1.1.6", + "dev": true + }, + "kind-of": { + "version": "3.2.2", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-readable-stream": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "to-regex": { + "version": "3.0.2", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "tough-cookie": { + "version": "2.5.0", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "trim-right": { + "version": "1.0.1", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "dev": true + }, + "type": { + "version": "1.2.0", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "optional": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "dev": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typewise": { + "version": "1.0.3", + "dev": true, + "requires": { + "typewise-core": "^1.2.0" + } + }, + "typewise-core": { + "version": "1.2.0", + "dev": true + }, + "typewiselite": { + "version": "1.0.0", + "dev": true + }, + "ultron": { + "version": "1.1.1", + "dev": true, + "optional": true + }, + "underscore": { + "version": "1.9.1", + "dev": true, + "optional": true + }, + "union-value": { + "version": "1.0.1", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "0.1.1", + "dev": true + } + } + }, + "universalify": { + "version": "0.1.2", + "dev": true + }, + "unorm": { + "version": "1.6.0", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "unset-value": { + "version": "1.0.0", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.1", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "dev": true + }, + "url-parse-lax": { + "version": "3.0.0", + "dev": true, + "optional": true, + "requires": { + "prepend-http": "^2.0.0" + } + }, + "url-set-query": { + "version": "1.0.0", + "dev": true, + "optional": true + }, + "url-to-options": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "use": { + "version": "3.1.1", + "dev": true + }, + "utf-8-validate": { + "version": "5.0.4", + "dev": true, + "requires": { + "node-gyp-build": "^4.2.0" + } + }, + "utf8": { + "version": "3.0.0", + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "dev": true + }, + "util.promisify": { + "version": "1.1.1", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "utils-merge": { + "version": "1.0.1", + "dev": true, + "optional": true + }, + "uuid": { + "version": "3.4.0", + "dev": true + }, + "varint": { + "version": "5.0.2", + "dev": true, + "optional": true + }, + "vary": { + "version": "1.1.2", + "dev": true, + "optional": true + }, + "verror": { + "version": "1.10.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "web3": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "web3-bzz": "1.2.11", + "web3-core": "1.2.11", + "web3-eth": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-shh": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-bzz": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@types/node": "^12.12.6", + "got": "9.6.0", + "swarm-js": "^0.1.40", + "underscore": "1.9.1" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "dev": true, + "optional": true + } + } + }, + "web3-core": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@types/bn.js": "^4.11.5", + "@types/node": "^12.12.6", + "bignumber.js": "^9.0.0", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-requestmanager": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "dev": true, + "optional": true + } + } + }, + "web3-core-helpers": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-eth-iban": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-core-method": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/transactions": "^5.0.0-beta.135", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-core-promievent": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4" + } + }, + "web3-core-requestmanager": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "web3-providers-http": "1.2.11", + "web3-providers-ipc": "1.2.11", + "web3-providers-ws": "1.2.11" + } + }, + "web3-core-subscriptions": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + } + }, + "web3-eth": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-accounts": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-eth-ens": "1.2.11", + "web3-eth-iban": "1.2.11", + "web3-eth-personal": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-abi": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@ethersproject/abi": "5.0.0-beta.153", + "underscore": "1.9.1", + "web3-utils": "1.2.11" + } + }, + "web3-eth-accounts": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "crypto-browserify": "3.12.0", + "eth-lib": "0.2.8", + "ethereumjs-common": "^1.3.2", + "ethereumjs-tx": "^2.1.1", + "scrypt-js": "^3.0.1", + "underscore": "1.9.1", + "uuid": "3.3.2", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + }, + "uuid": { + "version": "3.3.2", + "dev": true, + "optional": true + } + } + }, + "web3-eth-contract": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@types/bn.js": "^4.11.5", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-ens": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "content-hash": "^2.5.2", + "eth-ens-namehash": "2.0.8", + "underscore": "1.9.1", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-promievent": "1.2.11", + "web3-eth-abi": "1.2.11", + "web3-eth-contract": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-eth-iban": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.9", + "web3-utils": "1.2.11" + } + }, + "web3-eth-personal": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "@types/node": "^12.12.6", + "web3-core": "1.2.11", + "web3-core-helpers": "1.2.11", + "web3-core-method": "1.2.11", + "web3-net": "1.2.11", + "web3-utils": "1.2.11" + }, + "dependencies": { + "@types/node": { + "version": "12.19.12", + "dev": true, + "optional": true + } + } + }, + "web3-net": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-utils": "1.2.11" + } + }, + "web3-provider-engine": { + "version": "14.2.1", + "dev": true, + "requires": { + "async": "^2.5.0", + "backoff": "^2.5.0", + "clone": "^2.0.0", + "cross-fetch": "^2.1.0", + "eth-block-tracker": "^3.0.0", + "eth-json-rpc-infura": "^3.1.0", + "eth-sig-util": "3.0.0", + "ethereumjs-block": "^1.2.2", + "ethereumjs-tx": "^1.2.0", + "ethereumjs-util": "^5.1.5", + "ethereumjs-vm": "^2.3.4", + "json-rpc-error": "^2.0.0", + "json-stable-stringify": "^1.0.1", + "promise-to-callback": "^1.0.0", + "readable-stream": "^2.2.9", + "request": "^2.85.0", + "semaphore": "^1.0.3", + "ws": "^5.1.1", + "xhr": "^2.2.0", + "xtend": "^4.0.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.6.3", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + }, + "deferred-leveldown": { + "version": "1.2.2", + "dev": true, + "requires": { + "abstract-leveldown": "~2.6.0" + } + }, + "eth-sig-util": { + "version": "1.4.2", + "dev": true, + "requires": { + "ethereumjs-abi": "git+https://github.com/ethereumjs/ethereumjs-abi.git", + "ethereumjs-util": "^5.1.1" + } + }, + "ethereumjs-account": { + "version": "2.0.5", + "dev": true, + "requires": { + "ethereumjs-util": "^5.0.0", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-block": { + "version": "1.7.1", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereum-common": "0.2.0", + "ethereumjs-tx": "^1.2.2", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereum-common": { + "version": "0.2.0", + "dev": true + } + } + }, + "ethereumjs-tx": { + "version": "1.3.7", + "dev": true, + "requires": { + "ethereum-common": "^0.0.18", + "ethereumjs-util": "^5.0.0" + } + }, + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + }, + "ethereumjs-vm": { + "version": "2.6.0", + "dev": true, + "requires": { + "async": "^2.1.2", + "async-eventemitter": "^0.2.2", + "ethereumjs-account": "^2.0.3", + "ethereumjs-block": "~2.2.0", + "ethereumjs-common": "^1.1.0", + "ethereumjs-util": "^6.0.0", + "fake-merkle-patricia-tree": "^1.0.1", + "functional-red-black-tree": "^1.0.1", + "merkle-patricia-tree": "^2.3.2", + "rustbn.js": "~0.2.0", + "safe-buffer": "^5.1.1" + }, + "dependencies": { + "ethereumjs-block": { + "version": "2.2.2", + "dev": true, + "requires": { + "async": "^2.0.1", + "ethereumjs-common": "^1.5.0", + "ethereumjs-tx": "^2.1.1", + "ethereumjs-util": "^5.0.0", + "merkle-patricia-tree": "^2.1.2" + }, + "dependencies": { + "ethereumjs-util": { + "version": "5.2.1", + "dev": true, + "requires": { + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "^0.1.3", + "rlp": "^2.0.0", + "safe-buffer": "^5.1.1" + } + } + } + }, + "ethereumjs-tx": { + "version": "2.1.2", + "dev": true, + "requires": { + "ethereumjs-common": "^1.5.0", + "ethereumjs-util": "^6.0.0" + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + } + } + }, + "isarray": { + "version": "0.0.1", + "dev": true + }, + "level-codec": { + "version": "7.0.1", + "dev": true + }, + "level-errors": { + "version": "1.0.5", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "1.3.1", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "level-errors": "^1.0.3", + "readable-stream": "^1.0.33", + "xtend": "^4.0.0" + }, + "dependencies": { + "readable-stream": { + "version": "1.1.14", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + } + } + }, + "level-ws": { + "version": "0.0.0", + "dev": true, + "requires": { + "readable-stream": "~1.0.15", + "xtend": "~2.1.1" + }, + "dependencies": { + "readable-stream": { + "version": "1.0.34", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "xtend": { + "version": "2.1.2", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "levelup": { + "version": "1.3.9", + "dev": true, + "requires": { + "deferred-leveldown": "~1.2.1", + "level-codec": "~7.0.0", + "level-errors": "~1.0.3", + "level-iterator-stream": "~1.3.0", + "prr": "~1.0.1", + "semver": "~5.4.1", + "xtend": "~4.0.0" + } + }, + "ltgt": { + "version": "2.2.1", + "dev": true + }, + "memdown": { + "version": "1.4.1", + "dev": true, + "requires": { + "abstract-leveldown": "~2.7.1", + "functional-red-black-tree": "^1.0.1", + "immediate": "^3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.1.1" + }, + "dependencies": { + "abstract-leveldown": { + "version": "2.7.2", + "dev": true, + "requires": { + "xtend": "~4.0.0" + } + } + } + }, + "merkle-patricia-tree": { + "version": "2.3.2", + "dev": true, + "requires": { + "async": "^1.4.2", + "ethereumjs-util": "^5.0.0", + "level-ws": "0.0.0", + "levelup": "^1.2.1", + "memdown": "^1.0.0", + "readable-stream": "^2.0.0", + "rlp": "^2.0.0", + "semaphore": ">=1.0.1" + }, + "dependencies": { + "async": { + "version": "1.5.2", + "dev": true + } + } + }, + "object-keys": { + "version": "0.4.0", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "semver": { + "version": "5.4.1", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "dev": true + }, + "ws": { + "version": "5.2.2", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + } + } + }, + "web3-providers-http": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "web3-core-helpers": "1.2.11", + "xhr2-cookies": "1.1.0" + } + }, + "web3-providers-ipc": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "oboe": "2.1.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11" + } + }, + "web3-providers-ws": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "eventemitter3": "4.0.4", + "underscore": "1.9.1", + "web3-core-helpers": "1.2.11", + "websocket": "^1.0.31" + } + }, + "web3-shh": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "web3-core": "1.2.11", + "web3-core-method": "1.2.11", + "web3-core-subscriptions": "1.2.11", + "web3-net": "1.2.11" + } + }, + "web3-utils": { + "version": "1.2.11", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "underscore": "1.9.1", + "utf8": "3.0.0" + }, + "dependencies": { + "eth-lib": { + "version": "0.2.8", + "dev": true, + "optional": true, + "requires": { + "bn.js": "^4.11.6", + "elliptic": "^6.4.0", + "xhr-request-promise": "^0.1.2" + } + } + } + }, + "websocket": { + "version": "1.0.32", + "dev": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "whatwg-fetch": { + "version": "2.0.4", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "dev": true + }, + "ws": { + "version": "3.3.3", + "dev": true, + "optional": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0", + "ultron": "~1.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "dev": true, + "optional": true + } + } + }, + "xhr": { + "version": "2.6.0", + "dev": true, + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "dev": true, + "optional": true, + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "dev": true, + "optional": true, + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xhr2-cookies": { + "version": "1.1.0", + "dev": true, + "optional": true, + "requires": { + "cookiejar": "^2.1.1" + } + }, + "xtend": { + "version": "4.0.2", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "dev": true + } + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "global": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz", + "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==", + "dev": true, + "requires": { + "min-document": "^2.19.0", + "process": "^0.11.10" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", + "dev": true + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hardhat": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.5.0.tgz", + "integrity": "sha512-S5CWcmiFZlFF2qFGyf5LlgVnJDXwTs5UBKU3GPQCjsUD3NAIWzXr/4xDSij3YWdg751axgLiKAJM01cHcxGb7A==", + "dev": true, + "requires": { + "@ethereumjs/block": "^3.4.0", + "@ethereumjs/blockchain": "^5.4.0", + "@ethereumjs/common": "^2.4.0", + "@ethereumjs/tx": "^3.3.0", + "@ethereumjs/vm": "^5.5.0", + "@ethersproject/abi": "^5.1.2", + "@sentry/node": "^5.18.1", + "@solidity-parser/parser": "^0.11.0", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "eth-sig-util": "^2.5.2", + "ethereum-cryptography": "^0.1.2", + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^7.1.0", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "https-proxy-agent": "^5.0.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "lodash": "^4.17.11", + "merkle-patricia-tree": "^4.2.0", + "mnemonist": "^0.38.0", + "mocha": "^7.1.2", + "node-fetch": "^2.6.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "slash": "^3.0.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "true-case-path": "^2.2.1", + "tsort": "0.0.1", + "uuid": "^3.3.2", + "ws": "^7.4.6" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", + "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "idna-uts46-hx": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", + "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "dev": true, + "requires": { + "punycode": "2.1.0" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "immediate": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", + "dev": true + }, + "immutable": { + "version": "4.0.0-rc.14", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0-rc.14.tgz", + "integrity": "sha512-pfkvmRKJSoW7JFx0QeYlAmT+kNYvn5j0u7bnpNq4N2RCvHSTlLT208G8jgaquNe+Q8kCPHKOSpxJkyvLDpYq0w==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "requires": { + "fp-ts": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "dev": true + }, + "is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.2.tgz", + "integrity": "sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha1-fY035q135dEnFIkTxXPggtd39VQ=", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-url": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", + "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "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" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-sha3": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", + "integrity": "sha1-DU/9gALVMzqrr0oj7tL2N0yfKOc=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "keccak": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.1.tgz", + "integrity": "sha512-epq90L9jlFWCW7+pQa6JOnKn2Xgl2mtI664seYR6MHskvI9agt7AnDqmAlp9TqU4/caMYbA08Hi5DMZAl5zdkA==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11" + } + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "level-codec": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", + "dev": true, + "requires": { + "buffer": "^5.6.0" + } + }, + "level-concat-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", + "dev": true + }, + "level-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", + "dev": true, + "requires": { + "errno": "~0.1.1" + } + }, + "level-iterator-stream": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.4.0", + "xtend": "^4.0.2" + } + }, + "level-mem": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/level-mem/-/level-mem-5.0.1.tgz", + "integrity": "sha512-qd+qUJHXsGSFoHTziptAKXoLX87QjR7v2KMbqncDXPxQuCdsQlzmyX+gwrEHhlzn08vkf8TyipYyMmiC6Gobzg==", + "dev": true, + "requires": { + "level-packager": "^5.0.3", + "memdown": "^5.0.0" + } + }, + "level-packager": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", + "dev": true, + "requires": { + "encoding-down": "^6.3.0", + "levelup": "^4.3.2" + } + }, + "level-supports": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", + "dev": true, + "requires": { + "xtend": "^4.0.2" + } + }, + "level-ws": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-ws/-/level-ws-2.0.0.tgz", + "integrity": "sha512-1iv7VXx0G9ec1isqQZ7y5LmoZo/ewAsyDHNA8EFDW5hqH2Kqovm33nSFkSdnLLAK+I5FlT+lo5Cw9itGe+CpQA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^3.1.0", + "xtend": "^4.0.1" + } + }, + "levelup": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", + "dev": true, + "requires": { + "deferred-leveldown": "~5.3.0", + "level-errors": "~2.0.0", + "level-iterator-stream": "~4.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.assign": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", + "integrity": "sha1-DZnzzNem0mHRm9rrkkUAXShYCOc=", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha1-81ypHEk/e3PaDgdJUwTxezH4fuU=", + "dev": true + }, + "mcl-wasm": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.8.tgz", + "integrity": "sha512-qNHlYO6wuEtSoH5A8TcZfCEHtw8gGPqF6hLZpQn2SVd/Mck0ELIKOkmj072D98S9B9CI/jZybTUC96q1P2/ZDw==", + "dev": true, + "requires": { + "typescript": "^4.3.4" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memdown": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/memdown/-/memdown-5.1.0.tgz", + "integrity": "sha512-B3J+UizMRAlEArDjWHTMmadet+UKwHd3UjMgGBkZcKAxAYVPS9o0Yeiha4qvz7iGiL2Sb3igUft6p7nbFWctpw==", + "dev": true, + "requires": { + "abstract-leveldown": "~6.2.1", + "functional-red-black-tree": "~1.0.1", + "immediate": "~3.2.3", + "inherits": "~2.0.1", + "ltgt": "~2.2.0", + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "abstract-leveldown": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "immediate": "^3.2.3", + "level-concat-iterator": "~2.0.0", + "level-supports": "~1.0.0", + "xtend": "~4.0.0" + } + }, + "immediate": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.2.3.tgz", + "integrity": "sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw=", + "dev": true + } + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", + "dev": true + }, + "merkle-patricia-tree": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/merkle-patricia-tree/-/merkle-patricia-tree-4.2.0.tgz", + "integrity": "sha512-0sBVXs7z1Q1/kxzWZ3nPnxSPiaHKF/f497UQzt9O7isRcS10tel9jM/4TivF6Jv7V1yFq4bWyoATxbDUOen5vQ==", + "dev": true, + "requires": { + "@types/levelup": "^4.3.0", + "ethereumjs-util": "^7.0.10", + "level-mem": "^5.0.1", + "level-ws": "^2.0.0", + "readable-stream": "^3.6.0", + "rlp": "^2.2.4", + "semaphore-async-await": "^1.5.1" + } + }, + "micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.2.3" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime-db": { + "version": "1.49.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.49.0.tgz", + "integrity": "sha512-CIc8j9URtOVApSFCQIF+VBkX1RwXp/oMMOrqdyXSBXq5RWNEsRfyj1kiRnQgmNXmHxPoFIxOroKA3zcU9P+nAA==", + "dev": true + }, + "mime-types": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.32.tgz", + "integrity": "sha512-hJGaVS4G4c9TSMYh2n6SQAGrC4RnfU+daP8G7cSCmaqNjiOoUY0VHCMS42pxnQmVF1GWwFhbHWn3RIxCqTmZ9A==", + "dev": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true + }, + "min-document": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz", + "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=", + "dev": true, + "requires": { + "dom-walk": "^0.1.0" + } + }, + "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==", + "dev": true + }, + "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=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mnemonist": { + "version": "0.38.3", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.3.tgz", + "integrity": "sha512-2K9QYubXx/NAjv4VLq1d1Ly8pWNC5L3BrixtdkyTegXWJIqY+zLNDhhX/A+ZwWt70tB1S8H4BE8FLYEFyNoOBw==", + "dev": true, + "requires": { + "obliterator": "^1.6.1" + } + }, + "mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-gyp-build": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.2.3.tgz", + "integrity": "sha512-MN6ZpzmfNCRM+3t57PTJHgHyw/h4OWnZ6mR8P5j/uZtqQr46RRuDE/P+g3n0YR/AiYXeWixZZzaip77gdICfRg==", + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "number-to-bn": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", + "integrity": "sha1-uzYjWS9+X54AMLGXe9QaDFP+HqA=", + "dev": true, + "requires": { + "bn.js": "4.11.6", + "strip-hex-prefix": "1.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha1-UzRK2xRhehP26N0s4okF0cC6MhU=", + "dev": true + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-inspect": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "obliterator": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-1.6.1.tgz", + "integrity": "sha512-9WXswnqINnnhOG/5SLimUlzuU1hFJUc8zkwyD59Sd+dPOMf05PmnYG/d6Q7HZ+KmgkZJa1PxRso6QdM3sTNHig==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "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" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "parse-headers": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.3.tgz", + "integrity": "sha512-QhhZ+DCCit2Coi2vmAKbq5RGTRcQUOE2+REgv8vdyu7MnYx2eZztegqtTx99TZ86GTIwqiy3+4nQTWZ2tgmdCA==", + "dev": true + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "patch-package": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.4.7.tgz", + "integrity": "sha512-S0vh/ZEafZ17hbhgqdnpunKDfzHQibQizx9g8yEf5dcVk3KOflOfdufRXQX8CSEkyOQwuM/bNz1GwKvFj54kaQ==", + "dev": true, + "requires": { + "@yarnpkg/lockfile": "^1.1.0", + "chalk": "^2.4.2", + "cross-spawn": "^6.0.5", + "find-yarn-workspace-root": "^2.0.0", + "fs-extra": "^7.0.1", + "is-ci": "^2.0.0", + "klaw-sync": "^6.0.0", + "minimist": "^1.2.0", + "open": "^7.4.2", + "rimraf": "^2.6.3", + "semver": "^5.6.0", + "slash": "^2.0.0", + "tmp": "^0.0.33" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "postinstall-postinstall": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postinstall-postinstall/-/postinstall-postinstall-2.1.0.tgz", + "integrity": "sha512-7hQX6ZlZXIoRiWNrbMQaLzUUfH+sSx39u8EJ9HYuDc1kLo9IXKWjM5RSquZN1ad5GnH8CGFM78fsAAQi3OKEEQ==", + "dev": true + }, + "prettier": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.3.2.tgz", + "integrity": "sha512-lnJzDfJ66zkMy58OL5/NY5zp70S7Nz6KqcKkXYzn2tMVrNxvbqaBpg7H3qHaLxCJ5lNMsGuM8+ohS7cZrthdLQ==", + "dev": true + }, + "printj": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/printj/-/printj-1.1.2.tgz", + "integrity": "sha512-zA2SmoLaxZyArQTOPj5LXecR+RagfPSU5Kw1qP+jkWeNlrq+eJZyY2oS68SU1Z/7/myXM4lo9716laOFAVStCQ==", + "dev": true + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "punycode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", + "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "dev": true + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dev": true, + "requires": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-body": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.1.tgz", + "integrity": "sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==", + "dev": true, + "requires": { + "bytes": "3.1.0", + "http-errors": "1.7.3", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.6.tgz", + "integrity": "sha512-HAfAmL6SDYNWPUOJNrM500x4Thn4PZsEy5pijPh40U9WfNk0z15hUYzO9xVIMAdIHdFtD8CBDHd75Td1g36Mjg==", + "dev": true, + "requires": { + "bn.js": "^4.11.1" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "secp256k1": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.2.tgz", + "integrity": "sha512-UDar4sKvWAksIlfX3xIaQReADn+WFnHvbVujpcbr+9Sf/69odMwy2MUsz5CKLQgX9nsIyrjuxL2imVyoNHa3fg==", + "dev": true, + "requires": { + "elliptic": "^6.5.2", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semaphore-async-await": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/semaphore-async-await/-/semaphore-async-await-1.5.1.tgz", + "integrity": "sha1-hXvvXjZEYBykuVcLh+nfXKEpdPo=", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true + }, + "simple-get": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.1.tgz", + "integrity": "sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw==", + "dev": true, + "requires": { + "decompress-response": "^3.3.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha1-8jP/zAjU2n1DLapEl3aYnbHfk/A=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz", + "integrity": "sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ==", + "dev": true + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + } + } + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha1-DF8VX+8RUTczd96du1iNoFUA428=", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "test-value": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/test-value/-/test-value-2.1.0.tgz", + "integrity": "sha1-Edpv9nDzRxpztiXKTz/c97t0gpE=", + "dev": true, + "requires": { + "array-back": "^1.0.3", + "typical": "^2.6.0" + }, + "dependencies": { + "array-back": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-1.0.4.tgz", + "integrity": "sha1-ZEun8JX3/898Q7Xw3DnTwfA8Bjs=", + "dev": true, + "requires": { + "typical": "^2.6.0" + } + } + } + }, + "testrpc": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/testrpc/-/testrpc-0.0.1.tgz", + "integrity": "sha512-afH1hO+SQ/VPlmaLUFj2636QMeDvPCeQMc/9RBMW0IfjNe9gFD9Ra3ShqYkB7py0do1ZcCna/9acHyzTJ+GcNA==", + "dev": true + }, + "timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha1-8y6srFoXW+ol1/q1Zas+2HQe9W8=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + } + } + }, + "true-case-path": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true + }, + "ts-essentials": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-1.0.4.tgz", + "integrity": "sha512-q3N1xS4vZpRouhYHDPwO0bDW3EZ6SK9CrrDHxi/D6BPReSjpVgWIOpLS2o0gSBZm+7q/wyKp6RVM1AeeW7uyfQ==", + "dev": true + }, + "ts-generator": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ts-generator/-/ts-generator-0.1.1.tgz", + "integrity": "sha512-N+ahhZxTLYu1HNTQetwWcx3so8hcYbkKBHTr4b4/YgObFTIKkOSSsaa+nal12w8mfrJAyzJfETXawbNjSfP2gQ==", + "dev": true, + "requires": { + "@types/mkdirp": "^0.5.2", + "@types/prettier": "^2.1.1", + "@types/resolve": "^0.0.8", + "chalk": "^2.4.1", + "glob": "^7.1.2", + "mkdirp": "^0.5.1", + "prettier": "^2.1.2", + "resolve": "^1.8.1", + "ts-essentials": "^1.0.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha1-4igPXoF/i/QnVlf9D5rr1E9aJ4Y=", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "typechain": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/typechain/-/typechain-3.0.0.tgz", + "integrity": "sha512-ft4KVmiN3zH4JUFu2WJBrwfHeDf772Tt2d8bssDTo/YcckKW2D+OwFrHXRC6hJvO3mHjFQTihoMV6fJOi0Hngg==", + "dev": true, + "requires": { + "command-line-args": "^4.0.7", + "debug": "^4.1.1", + "fs-extra": "^7.0.0", + "js-sha3": "^0.8.0", + "lodash": "^4.17.15", + "ts-essentials": "^6.0.3", + "ts-generator": "^0.1.1" + }, + "dependencies": { + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "ts-essentials": { + "version": "6.0.7", + "resolved": "https://registry.npmjs.org/ts-essentials/-/ts-essentials-6.0.7.tgz", + "integrity": "sha512-2E4HIIj4tQJlIHuATRHayv0EfMGK3ris/GRk1E3CFnsZzeNV+hUmelbaTZHLtXaZppM5oLhHRtO04gINC4Jusw==", + "dev": true, + "requires": {} + } + } + }, + "typescript": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", + "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", + "dev": true + }, + "typical": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-2.6.1.tgz", + "integrity": "sha1-XAgOXWYcu+OCWdLnCjxyU+hziB0=", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-set-query": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", + "integrity": "sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=", + "dev": true + }, + "utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", + "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "web3-utils": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.5.0.tgz", + "integrity": "sha512-hNyw7Oxi6TM3ivXmv4hK5Cvyi9ML3UoKtcCYvLF9woPWh5v2dwCCVO1U3Iq5HHK7Dqq28t1d4CxWHqUfOfAkgg==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "eth-lib": "0.2.8", + "ethereum-bloom-filters": "^1.0.6", + "ethjs-unit": "0.1.6", + "number-to-bn": "1.7.0", + "randombytes": "^2.1.0", + "utf8": "3.0.0" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "window-size": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.2.0.tgz", + "integrity": "sha1-tDFbtCFKPXBY6+7okuE/ok2YsHU=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.3.tgz", + "integrity": "sha512-kQ/dHIzuLrS6Je9+uv81ueZomEwH0qVYstcAQ4/Z93K8zeko9gtAbttJWzoC5ukqXY1PpoouV3+VSOqEAFt5wg==", + "dev": true, + "requires": {} + }, + "xhr": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", + "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "dev": true, + "requires": { + "global": "~4.4.0", + "is-function": "^1.0.1", + "parse-headers": "^2.0.0", + "xtend": "^4.0.0" + } + }, + "xhr-request": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", + "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "dev": true, + "requires": { + "buffer-to-arraybuffer": "^0.0.5", + "object-assign": "^4.1.1", + "query-string": "^5.0.1", + "simple-get": "^2.7.0", + "timed-out": "^4.0.1", + "url-set-query": "^1.0.0", + "xhr": "^2.0.4" + } + }, + "xhr-request-promise": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", + "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "dev": true, + "requires": { + "xhr-request": "^1.1.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } +} diff --git a/projects/Team-7-DeDrops/contract/package.json b/projects/Team-7-DeDrops/contract/package.json new file mode 100644 index 0000000..71daa05 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/package.json @@ -0,0 +1,22 @@ +{ + "name": "dedrops-contract", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "devDependencies": { + "@nomiclabs/hardhat-ethers": "^2.0.2", + "@nomiclabs/hardhat-waffle": "^2.0.1", + "chai": "^4.3.4", + "ethereum-waffle": "^3.4.0", + "ethers": "^5.4.2", + "hardhat": "^2.5.0" + }, + "dependencies": { + "@openzeppelin/contracts": "^3.4.0" + } +} diff --git a/projects/Team-7-DeDrops/contract/scripts/deploy-bank20.js b/projects/Team-7-DeDrops/contract/scripts/deploy-bank20.js new file mode 100644 index 0000000..b1120d7 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/scripts/deploy-bank20.js @@ -0,0 +1,235 @@ +const hre = require('hardhat') +const fs = require('fs') +const { BigNumber, utils } = require('ethers') + +//matic +var tokenAddress = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174' +var bankAddress = '0x13d6f4529c2a003f14cde0a356cee66637cd739a' +var DOMAIN_SEPARATOR = '0x3b4ce86ee8d7aab11e1f2deedfa185c8268cc4b1061ee70f69e020328fff4ac1' +var CLAIM_TYPEHASH = '0xa05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec1994' +var PASSWORD_TYPEHASH = '0x3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b' +var psw = '123456' + + +async function main() { + const accounts = await hre.ethers.getSigners() + + const Bank20 = await ethers.getContractFactory('Bank20') + let bank = await Bank20.deploy() + await bank.deployed() + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('Claim deployed to:', bank.address, 'DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) +} + + +async function deposit() { + const accounts = await hre.ethers.getSigners() + + const tokenAbi = getAbi('./artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json') + let token = new ethers.Contract(tokenAddress, tokenAbi, accounts[0]) + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + await token.approve(bank.address, m(1), {gasLimit:b('8000000')}) + console.log('approve done') + + await bank.deposit(token.address, m(1), accounts[0].address, {gasLimit:b('8000000')}) + console.log('deposit done') +} + + +async function view() { + const accounts = await hre.ethers.getSigners() + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + // let balance = d(await bank.tokenUserBalance(tokenAddress, accounts[0].address)) + // console.log('balance:', balance) +} + + +async function signClaim() { + const accounts = await hre.ethers.getSigners() + + let holder = accounts[0].address + let spender = accounts[1].address + // let spender = '0x37f88413AADb13d85030EEdC7600e31573BCa3c3' + let value = b(100000) + // let deadline = b(parseInt(Date.now() / 1000) + 86400) + let deadline = b(1631141007) + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'address', 'address', 'uint256', 'uint256'], + [CLAIM_TYPEHASH, tokenAddress, holder, spender, value, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0x' + process.env.ETH_PK_0 + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + let vrs = utils.splitSignature(sign) + + console.log('token:', tokenAddress) + console.log('owner:', holder) + console.log('spender:', spender) + console.log('value:', value.toString()) + console.log('deadline:', n(deadline)) + console.log('v:', vrs.v) + console.log('r:', vrs.r) + console.log('s:', vrs.s) +} + + +async function claim() { + const accounts = await hre.ethers.getSigners() + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + let holder = accounts[0].address + let spender = accounts[1].address + let value = m(1) + let deadline = b(1627273911) + let vrs = { + r: '0x835d7d4494d47314485ebe6d763ad6e1f6eea04d014966846e0306bdb09ec1ba', + s: '0x75425a0e60cd8bba130d5e873bdca54eb1ce7b781c16236b3654bc6ab0149a70', + _vs: '0xf5425a0e60cd8bba130d5e873bdca54eb1ce7b781c16236b3654bc6ab0149a70', + recoveryParam: 1, + v: 28 + } + + await bank.connect(accounts[1]).claim(tokenAddress, holder, spender, value, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('800000')}) + console.log('claim done') +} + + +async function signPassword() { + const accounts = await hre.ethers.getSigners() + + let holder = accounts[0].address + let value = m(1).div(10) + let deadline = b(parseInt(Date.now() / 1000) + 86400) + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'address', 'string', 'uint256', 'uint256'], + [PASSWORD_TYPEHASH, tokenAddress, holder, psw, value, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0x' + process.env.ETH_PK_0 + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + let vrs = utils.splitSignature(sign) + + console.log('token:', tokenAddress) + console.log('owner:', holder) + console.log('psw:', psw) + console.log('value:', value.toString()) + console.log('deadline:', n(deadline)) + console.log('v:', vrs.v) + console.log('r:', vrs.r) + console.log('s:', vrs.s) +} + + +async function password() { + const accounts = await hre.ethers.getSigners() + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + let holder = accounts[0].address + let value = m(1).div(10) + let deadline = b(1627273911) + let vrs = { + r: '0x835d7d4494d47314485ebe6d763ad6e1f6eea04d014966846e0306bdb09ec1ba', + s: '0x75425a0e60cd8bba130d5e873bdca54eb1ce7b781c16236b3654bc6ab0149a70', + v: 28 + } + + await bank.connect(accounts[2]).password(tokenAddress, holder, psw, value, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('password done') +} + + +async function withdraw() { + const accounts = await hre.ethers.getSigners() + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + let balance = await bank.tokenUserBalance(tokenAddress, accounts[0].address) + console.log('balance:', d(balance)) + + await bank.withdraw(tokenAddress, accounts[0].address, balance, {gasLimit:BigNumber.from('800000')}) + console.log('withdraw done') +} + + +function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi +} + +function m(num) { + return BigNumber.from('1000000').mul(num) +} + +function d(bn) { + return bn.div('1000').toNumber() / 1000 +} + +function b(num) { + return BigNumber.from(num) +} + +function n(bn) { + return bn.toNumber() +} + +async function delay(sec) { + return new Promise((resolve, reject) => { + setTimeout(resolve, sec * 1000); + }) +} + +view() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsERC.js b/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsERC.js new file mode 100644 index 0000000..4eaaa19 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsERC.js @@ -0,0 +1,108 @@ +const hre = require('hardhat') +const fs = require('fs') +const { BigNumber, utils } = require('ethers') + + +//matic +var tokenAddress = '0x2791bca1f2de4661ed88a30c99a7a9449aa84174' +var bankAddress = '0x13d6f4529c2a003f14cde0a356cee66637cd739a' +var DOMAIN_SEPARATOR = '0x3b4ce86ee8d7aab11e1f2deedfa185c8268cc4b1061ee70f69e020328fff4ac1' +var CLAIM_TYPEHASH = '0xa05335bcb0b0413b06aebf7578cda47f15e56bda72a634ee823fc1ef42ec1994' +var PASSWORD_TYPEHASH = '0x3dce4743a9c307489689d5a78849d8466d3d3fa3806e2e97961cead248e9a34b' +var dedropsAddress = '0xF2F2ed5f790f33e33f48D0e33addb33B002Ab4DF' + + +async function main() { + const accounts = await hre.ethers.getSigners() + + // const Bank20 = await ethers.getContractFactory('Bank20') + // let bank = await Bank20.deploy() + // await bank.deployed() + // DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + // CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + // PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + // console.log('Claim deployed to:', bank.address, 'DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const DeDropsERC = await ethers.getContractFactory('DeDropsERC') + let dedrops = await DeDropsERC.deploy(bankAddress) + await dedrops.deployed() + console.log('DeDropsERC deployed to:', dedrops.address) +} + + +async function drop() { + const accounts = await hre.ethers.getSigners() + + const tokenAbi = getAbi('./artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json') + let token = new ethers.Contract(tokenAddress, tokenAbi, accounts[0]) + + const dedropsAbi = getAbi('./artifacts/contracts/DeDropsERC.sol/DeDropsERC.json') + let dedrops = new ethers.Contract(dedropsAddress, dedropsAbi, accounts[0]) + + await token.connect(accounts[1]).approve(dedrops.address, b(100)) + console.log('approve done') + + await dedrops.connect(accounts[1]).drop(token.address, b(100), '测试空投', '测试的空投,有问题联系DeDrops.xyz', {gasLimit:BigNumber.from('8000000')}) + console.log('drop done') +} + + +async function view() { + const accounts = await hre.ethers.getSigners() + + const tokenAbi = getAbi('./artifacts/@openzeppelin/contracts/token/ERC20/IERC20.sol/IERC20.json') + let token = new ethers.Contract(tokenAddress, tokenAbi, accounts[0]) + + const dedropsAbi = getAbi('./artifacts/contracts/DeDropsERC.sol/DeDropsERC.json') + let dedrops = new ethers.Contract(dedropsAddress, dedropsAbi, accounts[0]) + + const bankAbi = getAbi('./artifacts/contracts/Bank20.sol/Bank20.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + let item = await drop.idToItem(b(1)) + console.log('id', n(item.id)) + console.log('token', item.token) + console.log('info', item.info) + console.log('info2', item.info2) + + console.log('bank balance:', n(await token.balanceOf(bank.address))) + + let amount = n(await bank.tokenUserBalance(tokenAddress, accounts[0].address)) + console.log('account0 balance in bank:', amount) +} + + +function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi +} + +function m(num) { + return BigNumber.from('1000000').mul(num) +} + +function d(bn) { + return bn.div('1000').toNumber() / 1000 +} + +function b(num) { + return BigNumber.from(num) +} + +function n(bn) { + return bn.toNumber() +} + +async function delay(sec) { + return new Promise((resolve, reject) => { + setTimeout(resolve, sec * 1000); + }) +} + +main() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsNFT.js b/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsNFT.js new file mode 100644 index 0000000..62cf87f --- /dev/null +++ b/projects/Team-7-DeDrops/contract/scripts/deploy-dedropsNFT.js @@ -0,0 +1,141 @@ +const hre = require('hardhat') +const fs = require('fs') +const { BigNumber, utils } = require('ethers') + + +//matic +var bankAddress = '0xc44dc52e259352B6C26AfFcEf9ce280836AD6860' +var DOMAIN_SEPARATOR = '0xa88c15decb7b31a157043f3cd4b8d44025fab8127a1ace79a4e42f4b4705550c' +var CLAIM_TYPEHASH = '0xb6a24ef5c5f68d9d0b21ed8a8f65af560e5c67ed6271d8c36130e21b56be877e' +var PASSWORD_TYPEHASH = '0x892bed353848c2d77daa7dec64601cc101e9d4dabd543a881719f8f210924128' +var dedropsAddress = '0xa96e19Fd3342a52eff889EF729a81ba1Ed8a60E0' + + +async function main() { + const accounts = await hre.ethers.getSigners() + + // const Bank1155 = await ethers.getContractFactory('Bank1155') + // let bank = await Bank1155.deploy() + // await bank.deployed() + // DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + // CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + // PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + // console.log('Bank1155 deployed to:', bank.address, 'DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const DeDropsNFT = await ethers.getContractFactory('DeDropsNFT') + let dedrops = await DeDropsNFT.deploy(bankAddress) + await dedrops.deployed() + console.log('DeDropsNFT deployed to:', dedrops.address) +} + + +async function mint() { + const accounts = await hre.ethers.getSigners() + + const dedropsAbi = getAbi('./artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json') + let dedrops = new ethers.Contract(dedropsAddress, dedropsAbi, accounts[0]) + + await dedrops.connect(accounts[1]).mint(b(100), '测试第一批NFT', '谁都可以来领') + console.log('mint done') +} + + +async function view() { + const accounts = await hre.ethers.getSigners() + + const dedropsAbi = getAbi('./artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json') + let dedrops = new ethers.Contract(dedropsAddress, dedropsAbi, accounts[1]) + + const bankAbi = getAbi('./artifacts/contracts/Bank1155.sol/Bank1155.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[1]) + + let item = await dedrops.idToItem(b(4)) + console.log('id', n(item.id)) + console.log('info', item.info) + console.log('info2', item.info2) + + console.log('bank nft:', n(await dedrops.balanceOf(bank.address, b(4)))) + console.log('account nft:', n(await dedrops.balanceOf(accounts[1].address, b(4)))) + + let amount = n(await bank.tokenUserBalance(dedropsAddress, b(4), accounts[0].address)) + console.log('nft amount:', amount) +} + + +async function signAndClaim() { + const accounts = await hre.ethers.getSigners() + + const dedropsAbi = getAbi('./artifacts/contracts/DeDropsNFT.sol/DeDropsNFT.json') + let dedrops = new ethers.Contract(dedropsAddress, dedropsAbi, accounts[0]) + + const bankAbi = getAbi('./artifacts/contracts/Bank1155.sol/Bank1155.json') + let bank = new ethers.Contract(bankAddress, bankAbi, accounts[0]) + + let owner = accounts[0].address + let spender = accounts[1].address + let deadline = b(parseInt(Date.now() / 1000) + 86400) + let id = b(4) + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'uint256', 'address', 'address', 'uint256'], + [CLAIM_TYPEHASH, dedrops.address, id, owner, spender, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0x' + process.env.DEDROPS_PK; + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + + await bank.connect(accounts[1]).claim(dedrops.address, id, owner, spender, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('claim done') +} + + +function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi +} + +function m(num) { + return BigNumber.from('1000000').mul(num) +} + +function d(bn) { + return bn.div('1000').toNumber() / 1000 +} + +function b(num) { + return BigNumber.from(num) +} + +function n(bn) { + return bn.toNumber() +} + +async function delay(sec) { + return new Promise((resolve, reject) => { + setTimeout(resolve, sec * 1000); + }) +} + +view() + .then(() => process.exit(0)) + .catch(error => { + console.error(error); + process.exit(1); + }); diff --git a/projects/Team-7-DeDrops/contract/test/bank1155-test b/projects/Team-7-DeDrops/contract/test/bank1155-test new file mode 100644 index 0000000..ccfea73 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/test/bank1155-test @@ -0,0 +1,178 @@ +const { expect, assert } = require('chai') +const { BigNumber, utils} = require('ethers') +const fs = require('fs') +const hre = require('hardhat') + + +describe('bank1155-test', function () { + let DOMAIN_SEPARATOR = '' + let CLAIM_TYPEHASH = '' + let PASSWORD_TYPEHASH = '' + let accounts + let erc + let tokenId = b(1) + let bank + let deadline + let vrs + let psw = '中文test' + + before(async function () { + accounts = await ethers.getSigners() + + console.log('account 0', accounts[0].address) + console.log('account 1', accounts[1].address) + console.log('account 2', accounts[2].address) + }) + + it('deploy', async function () { + const Bank1155 = await ethers.getContractFactory('Bank1155') + bank = await Bank1155.deploy() + await bank.deployed() + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('Claim deployed to:', bank.address, 'DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const ERC = await ethers.getContractFactory('TestNFT1155') + erc = await ERC.deploy() + await erc.deployed() + console.log('ERC deployed to:', erc.address) + + await erc.mint(accounts[0].address, tokenId, b(100), utils.arrayify([])) + console.log('mint done') + + await print() + }) + + it('deposit', async function () { + await erc.setApprovalForAll(bank.address, true) + await bank.deposit(erc.address, tokenId, accounts[0].address, b(10)) + await print() + }) + + it('transfer for deposit', async function () { + await erc.safeTransferFrom(accounts[0].address, bank.address, tokenId, b(15), utils.arrayify([])) + await print() + }) + + it('withdraw', async function () { + await bank.withdraw(erc.address, tokenId, accounts[1].address, b(2)) + await print() + }) + + it('sign claim', async function () { + holder = accounts[0].address + spender = accounts[1].address + deadline = b(parseInt(Date.now() / 1000) + 86400) + chainId = accounts[0].provider._network.chainId + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'uint256', 'address', 'address', 'uint256'], + [CLAIM_TYPEHASH, erc.address, tokenId, holder, spender, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + }) + + it('claim', async function () { + await bank.connect(accounts[1]).claim(erc.address, tokenId, holder, spender, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('claim') + + await print() + }) + + it('sign password', async function () { + holder = accounts[0].address + spender = accounts[1].address + deadline = b(parseInt(Date.now() / 1000) + 86400) + chainId = accounts[0].provider._network.chainId + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'uint256', 'address', 'string', 'uint256'], + [PASSWORD_TYPEHASH, erc.address, tokenId, holder, psw, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + console.log('sign', sign) + + vrs = utils.splitSignature(sign) + console.log('sign vrs', vrs) + }) + + it('password', async function () { + await bank.connect(accounts[2]).password(erc.address, tokenId, holder, psw, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('password') + + await print() + }) + + async function print() { + console.log('') + + console.log('account0 nft1:', n(await erc.balanceOf(accounts[0].address, b(1)))) + console.log('account1 nft1:', n(await erc.balanceOf(accounts[1].address, b(1)))) + console.log('account2 nft1:', n(await erc.balanceOf(accounts[2].address, b(1)))) + console.log('bank nft1:', n(await erc.balanceOf(bank.address, b(1)))) + + console.log('') + } + + + function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi + } + + function m(num) { + return BigNumber.from('1000000000000000000').mul(num) + } + + function d(bn) { + return bn.div('1000000000000000').toNumber() / 1000 + } + + function b(num) { + return BigNumber.from(num) + } + + function n(bn) { + return bn.toNumber() + } + + function s(bn) { + return bn.toString() + } +}) \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/test/bank20-test b/projects/Team-7-DeDrops/contract/test/bank20-test new file mode 100644 index 0000000..af0a51a --- /dev/null +++ b/projects/Team-7-DeDrops/contract/test/bank20-test @@ -0,0 +1,168 @@ +const { expect, assert } = require('chai') +const { BigNumber, utils} = require('ethers') +const fs = require('fs') +const hre = require('hardhat') + + +describe('bank20-test', function () { + let DOMAIN_SEPARATOR = '' + let CLAIM_TYPEHASH = '' + let PASSWORD_TYPEHASH = '' + let accounts + let erc + let bank + let deadline + let vrs + let psw = '中文test' + + before(async function () { + accounts = await ethers.getSigners() + + console.log('account 0', accounts[0].address) + console.log('account 1', accounts[1].address) + console.log('account 2', accounts[2].address) + }) + + it('deploy', async function () { + const Bank20 = await ethers.getContractFactory('Bank20') + bank = await Bank20.deploy() + await bank.deployed() + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('Claim deployed to:', bank.address, 'DOMAIN_SEPARATOR:', DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const ERC = await ethers.getContractFactory('MockERC20') + erc = await ERC.deploy('TEST', m(10000), 18) + await erc.deployed() + console.log('ERC deployed to:', erc.address) + + await print() + }) + + it('deposit', async function () { + await erc.approve(bank.address, m(300)) + await bank.deposit(erc.address, accounts[0].address, m(300)) + await print() + }) + + it('withdraw', async function () { + await bank.withdraw(erc.address, accounts[0].address, m(100)) + await print() + }) + + it('sign claim', async function () { + holder = accounts[0].address + spender = accounts[1].address + value = m(100) + deadline = b(parseInt(Date.now() / 1000) + 86400) + chainId = accounts[0].provider._network.chainId + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'address', 'address', 'uint256', 'uint256'], + [CLAIM_TYPEHASH, erc.address, holder, spender, value, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + }) + + it('claim', async function () { + await bank.connect(accounts[1]).claim(erc.address, holder, spender, value, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('claim') + + await print() + }) + + it('sign password', async function () { + holder = accounts[0].address + spender = accounts[1].address + value = m(100) + deadline = b(parseInt(Date.now() / 1000) + 86400) + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'address', 'string', 'uint256', 'uint256'], + [PASSWORD_TYPEHASH, erc.address, holder, psw, value, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + }) + + it('password', async function () { + await bank.connect(accounts[2]).password(erc.address, holder, psw, value, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('password') + + await print() + }) + + async function print() { + console.log('') + + console.log('account0 erc:', d(await erc.balanceOf(accounts[0].address))) + console.log('account1 erc:', d(await erc.balanceOf(accounts[1].address))) + console.log('account2 erc:', d(await erc.balanceOf(accounts[2].address))) + console.log('bank erc:', d(await erc.balanceOf(bank.address))) + + console.log('') + } + + + function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi + } + + function m(num) { + return BigNumber.from('1000000000000000000').mul(num) + } + + function d(bn) { + return bn.div('1000000000000000').toNumber() / 1000 + } + + function b(num) { + return BigNumber.from(num) + } + + function n(bn) { + return bn.toNumber() + } + + function s(bn) { + return bn.toString() + } +}) \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/test/drop-erc-test.js b/projects/Team-7-DeDrops/contract/test/drop-erc-test.js new file mode 100644 index 0000000..4db615d --- /dev/null +++ b/projects/Team-7-DeDrops/contract/test/drop-erc-test.js @@ -0,0 +1,152 @@ +const { expect, assert } = require('chai') +const { BigNumber, utils} = require('ethers') +const fs = require('fs') +const hre = require('hardhat') + + +describe('drop-erc-test', function () { + let DOMAIN_SEPARATOR = '' + let CLAIM_TYPEHASH = '' + let PASSWORD_TYPEHASH = '' + let accounts + let dedrops + let erc + let bank + let deadline + let vrs + let owner + let spender + let chainId + let value = m(1) + + before(async function () { + accounts = await ethers.getSigners() + + console.log('account 0', accounts[0].address) + console.log('account 1', accounts[1].address) + console.log('account 2', accounts[2].address) + }) + + it('deploy', async function () { + const Bank20 = await ethers.getContractFactory('Bank20') + bank = await Bank20.deploy() + await bank.deployed() + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('Bank20 deployed to:', bank.address, 'DOMAIN_SEPARATOR:' + , DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const DeDropsERC = await ethers.getContractFactory('DeDropsERC') + dedrops = await DeDropsERC.deploy(bank.address) + await dedrops.deployed() + console.log('DeDropsERC deployed to:', dedrops.address) + + const ERC = await ethers.getContractFactory('MockERC20', accounts[1]) + erc = await ERC.deploy('TEST', m(10000), 18) + await erc.deployed() + console.log('ERC deployed to:', erc.address) + + await print() + }) + + it('drop', async function () { + await erc.approve(dedrops.address, m(100)) + console.log('approve done') + + let info = '比特币BTC:全部靠矿机挖出,每4年产量减半。因为刚开始那2年没什么人关注,只有中本聪自己在挖,所以他挖了400多万枚(总量2100万),占比不小,但是他至今一个币没卖,简直是神人,没人知道他是谁。BTC的市值占整个加密货币里面一半以上,每个涨跌都牵系着整个币圈的震荡。现在越来越多的人把BTC当作数字黄金,而不是货币,因为货币是一直贬值,黄金一直增值。说到比特币,不得不提挖矿,虽然很耗电,但是这是一种公平的发行方式,股票不可能因为你经常买这家公司的产品,而送你股票,即使你给这家公司打工,股票也会酌情给老员工,而且只给一丢丢。挖矿就不一样了,参与者都有BTC奖励,可以快速聚拢起矿工社群,大矿工比如宝二爷,会去推广,让越来越多的人参与进来,人多了,就有了价值。' + let info2 = '以太坊ETH:ETH对币圈的影响太深远了,今天的BTC是精神图腾的存在,ETH是大半个加密世界的基础设施。BTC在转账的时候,可以加一段备注,后来发展为可以发一段简单的程序代码,这个就是智能合约的雏形。ETH对这项功能进行了重新设计,使得图灵完备,即可以实现复杂的程序,而且ETH的挖矿算法也改进到了极致,速度快,抗asic,刚好在LTC被asic化之后,简直就是显卡矿工之家,直到今天也是显卡挖矿第一选择。未来会转POS,即淘汰POW矿机挖矿,把ETH抵押给节点就能挖出ETH,如果你怕节点跑路,那最好你自己运行一个节点(服务器),由此来去中心化,这个是技术发展的必然,因为POS的速度更快(快100倍以上),可以容纳更多的应用,以及更好的稳定币价,还省电。ETH已经建立了庞大的社群,矿工人数占比不高了,如今DEFI成为ETH新的发动机,让更多生态进来是ETH的挑战,制约生态的正是POW挖矿的性能瓶颈和高昂手续费,也因此价值溢出让BSC、polygon等EVM公链崛起,所以POS是未来的方向。' + await dedrops.connect(accounts[1]).drop(erc.address, m(100), info, info2) + console.log('drop done') + + let item = await dedrops.idToItem(b(1)) + console.log('id', n(item.id)) + console.log('token', item.token) + console.log('amount', d(item.amount)) + console.log('info', item.info) + console.log('info2', item.info2) + + await print() + }) + + it('sign claim', async function () { + owner = accounts[0].address + spender = accounts[1].address + deadline = b(parseInt(Date.now() / 1000) + 86400) + chainId = accounts[0].provider._network.chainId + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'address', 'address', 'uint256', 'uint256'], + [CLAIM_TYPEHASH, erc.address, owner, spender, value, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + }) + + it('claim', async function () { + await bank.connect(accounts[1]).claim(erc.address, owner, spender, value, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('claim') + + await print() + }) + + async function print() { + console.log('') + + console.log('account0 erc:', d(await erc.balanceOf(accounts[0].address))) + console.log('account1 erc:', d(await erc.balanceOf(accounts[1].address))) + console.log('account2 erc:', d(await erc.balanceOf(accounts[2].address))) + console.log('bank erc:', d(await erc.balanceOf(bank.address))) + + let amount = d(await bank.tokenUserBalance(erc.address, accounts[0].address)) + console.log('account0 erc in bank:', amount) + amount = d(await bank.tokenUserBalance(erc.address, accounts[1].address)) + console.log('account1 erc in bank:', amount) + + console.log('') + } + + + function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi + } + + function m(num) { + return BigNumber.from('1000000000000000000').mul(num) + } + + function d(bn) { + return bn.div('1000000000000000').toNumber() / 1000 + } + + function b(num) { + return BigNumber.from(num) + } + + function n(bn) { + return bn.toNumber() + } + + function s(bn) { + return bn.toString() + } +}) \ No newline at end of file diff --git a/projects/Team-7-DeDrops/contract/test/drop-nft-test.js b/projects/Team-7-DeDrops/contract/test/drop-nft-test.js new file mode 100644 index 0000000..ec34801 --- /dev/null +++ b/projects/Team-7-DeDrops/contract/test/drop-nft-test.js @@ -0,0 +1,138 @@ +const { expect, assert } = require('chai') +const { BigNumber, utils} = require('ethers') +const fs = require('fs') +const hre = require('hardhat') + + +describe('drop-nft-test', function () { + let DOMAIN_SEPARATOR = '' + let CLAIM_TYPEHASH = '' + let PASSWORD_TYPEHASH = '' + let accounts + let dedrops + let id = b(1) + let bank + let deadline + let vrs + let owner + let spender + let chainId + + before(async function () { + accounts = await ethers.getSigners() + + console.log('account 0', accounts[0].address) + console.log('account 1', accounts[1].address) + console.log('account 2', accounts[2].address) + }) + + it('deploy', async function () { + const Bank1155 = await ethers.getContractFactory('Bank1155') + bank = await Bank1155.deploy() + await bank.deployed() + DOMAIN_SEPARATOR = await bank.DOMAIN_SEPARATOR() + CLAIM_TYPEHASH = await bank.CLAIM_TYPEHASH() + PASSWORD_TYPEHASH = await bank.PASSWORD_TYPEHASH() + console.log('Bank1155 deployed to:', bank.address, 'DOMAIN_SEPARATOR:' + , DOMAIN_SEPARATOR, 'CLAIM_TYPEHASH:', CLAIM_TYPEHASH, 'PASSWORD_TYPEHASH:', PASSWORD_TYPEHASH) + + const DeDropsNFT = await ethers.getContractFactory('DeDropsNFT') + dedrops = await DeDropsNFT.deploy(bank.address) + await dedrops.deployed() + console.log('DeDropsNFT deployed to:', dedrops.address) + + let info = '比特币BTC:全部靠矿机挖出,每4年产量减半。因为刚开始那2年没什么人关注,只有中本聪自己在挖,所以他挖了400多万枚(总量2100万),占比不小,但是他至今一个币没卖,简直是神人,没人知道他是谁。BTC的市值占整个加密货币里面一半以上,每个涨跌都牵系着整个币圈的震荡。现在越来越多的人把BTC当作数字黄金,而不是货币,因为货币是一直贬值,黄金一直增值。说到比特币,不得不提挖矿,虽然很耗电,但是这是一种公平的发行方式,股票不可能因为你经常买这家公司的产品,而送你股票,即使你给这家公司打工,股票也会酌情给老员工,而且只给一丢丢。挖矿就不一样了,参与者都有BTC奖励,可以快速聚拢起矿工社群,大矿工比如宝二爷,会去推广,让越来越多的人参与进来,人多了,就有了价值。' + let info2 = '以太坊ETH:ETH对币圈的影响太深远了,今天的BTC是精神图腾的存在,ETH是大半个加密世界的基础设施。BTC在转账的时候,可以加一段备注,后来发展为可以发一段简单的程序代码,这个就是智能合约的雏形。ETH对这项功能进行了重新设计,使得图灵完备,即可以实现复杂的程序,而且ETH的挖矿算法也改进到了极致,速度快,抗asic,刚好在LTC被asic化之后,简直就是显卡矿工之家,直到今天也是显卡挖矿第一选择。未来会转POS,即淘汰POW矿机挖矿,把ETH抵押给节点就能挖出ETH,如果你怕节点跑路,那最好你自己运行一个节点(服务器),由此来去中心化,这个是技术发展的必然,因为POS的速度更快(快100倍以上),可以容纳更多的应用,以及更好的稳定币价,还省电。ETH已经建立了庞大的社群,矿工人数占比不高了,如今DEFI成为ETH新的发动机,让更多生态进来是ETH的挑战,制约生态的正是POW挖矿的性能瓶颈和高昂手续费,也因此价值溢出让BSC、polygon等EVM公链崛起,所以POS是未来的方向。' + await dedrops.connect(accounts[1]).mint(b(100), info, info2) + console.log('mint done') + + let item = await dedrops.idToItem(b(1)) + console.log('id', n(item.id)) + console.log('amount', n(item.amount)) + console.log('info', item.info) + console.log('info2', item.info2) + + await print() + }) + + it('sign claim', async function () { + owner = accounts[0].address + spender = accounts[1].address + deadline = b(parseInt(Date.now() / 1000) + 86400) + chainId = accounts[0].provider._network.chainId + + let digest = utils.keccak256( + utils.solidityPack( + ['bytes1', 'bytes1', 'bytes32', 'bytes32'], + [ + '0x19', + '0x01', + DOMAIN_SEPARATOR, + utils.keccak256( + utils.defaultAbiCoder.encode( + ['bytes32', 'address', 'uint256', 'address', 'address', 'uint256'], + [CLAIM_TYPEHASH, dedrops.address, id, owner, spender, deadline] + ) + ) + ] + ) + ) + + let privateKey = '0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80' //account0 pk + let signingKey = new ethers.utils.SigningKey(privateKey) + let sign = signingKey.signDigest(digest) + vrs = utils.splitSignature(sign) + console.log(vrs) + }) + + it('claim', async function () { + await bank.connect(accounts[1]).claim(dedrops.address, id, owner, spender, deadline + , vrs.v, vrs.r, vrs.s, {gasLimit:BigNumber.from('8000000')}) + console.log('claim') + + await print() + }) + + async function print() { + console.log('') + + console.log('account0 nft1:', n(await dedrops.balanceOf(accounts[0].address, b(1)))) + console.log('account1 nft1:', n(await dedrops.balanceOf(accounts[1].address, b(1)))) + console.log('account2 nft1:', n(await dedrops.balanceOf(accounts[2].address, b(1)))) + console.log('bank nft1:', n(await dedrops.balanceOf(bank.address, b(1)))) + + let amount = n(await bank.tokenUserBalance(dedrops.address, b(1), accounts[0].address)) + console.log('account0 nft1 in bank:', amount) + amount = n(await bank.tokenUserBalance(dedrops.address, b(1), accounts[1].address)) + console.log('account1 nft1 in bank:', amount) + + console.log('') + } + + + function getAbi(jsonPath) { + let file = fs.readFileSync(jsonPath) + let abi = JSON.parse(file.toString()).abi + return abi + } + + function m(num) { + return BigNumber.from('1000000000000000000').mul(num) + } + + function d(bn) { + return bn.div('1000000000000000').toNumber() / 1000 + } + + function b(num) { + return BigNumber.from(num) + } + + function n(bn) { + return bn.toNumber() + } + + function s(bn) { + return bn.toString() + } +}) \ No newline at end of file diff --git a/projects/Team-7-DeDrops/interface b/projects/Team-7-DeDrops/interface deleted file mode 160000 index bd6a510..0000000 --- a/projects/Team-7-DeDrops/interface +++ /dev/null @@ -1 +0,0 @@ -Subproject commit bd6a510f76cda6982fb2741e894a8809aaeee5e6 diff --git a/projects/Team-7-DeDrops/interface/.github/workflows/main.yml b/projects/Team-7-DeDrops/interface/.github/workflows/main.yml new file mode 100644 index 0000000..80b114c --- /dev/null +++ b/projects/Team-7-DeDrops/interface/.github/workflows/main.yml @@ -0,0 +1,12 @@ +name: Autocloser +on: [issues] +jobs: + autoclose: + runs-on: ubuntu-latest + steps: + - name: Issue auto-closer + uses: roots/issue-closer-action@v1.1 + with: + repo-token: ${{ secrets.GITHUB_TOKEN }} + issue-close-message: "@${issue.user.login} this issue was automatically closed because it did not follow our rules:\n\n
    \n\n\n\nIMPORTANT: Please use the following link to create a new issue:\n\nhttps://www.creative-tim.com/new-issue/notus-nextjs?ref=nnjs-new-issue\n\n**If your issue was not created using the app above, it will be closed immediately.**\n\n\n\nLove Creative Tim? Do you need Angular, React, Vuejs or HTML? You can visit:\n👉  https://www.creative-tim.com/bundles\n👉  https://www.creative-tim.com\n\n\n
    \n\n" + issue-pattern: (\#\#\# Version([\S\s.*]*?)\#\#\# Reproduction link([\S\s.*]*?)\#\#\# Operating System([\S\s.*]*?)\#\#\# Device([\S\s.*]*?)\#\#\# Browser & Version([\S\s.*]*?)\#\#\# Steps to reproduce([\S\s.*]*?)\#\#\# What is expected([\S\s.*]*?)\#\#\# What is actually happening([\S\s.*]*?)---([\S\s.*]*?)\#\#\# Solution([\S\s.*]*?)\#\#\# Additional comments([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>)|(\#\#\# What is your enhancement([\S\s.*]*?)\<\!-- generated by creative-tim-issues\. DO NOT REMOVE --\>) diff --git a/projects/Team-7-DeDrops/interface/.gitignore b/projects/Team-7-DeDrops/interface/.gitignore new file mode 100644 index 0000000..7692eaa --- /dev/null +++ b/projects/Team-7-DeDrops/interface/.gitignore @@ -0,0 +1,28 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js + +# testing +/coverage + +# production +/build + +# misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +.next/ +out/ + +commit.sh diff --git a/projects/Team-7-DeDrops/interface/.vscode/settings.json b/projects/Team-7-DeDrops/interface/.vscode/settings.json new file mode 100644 index 0000000..fe95ac3 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "editor.formatOnPaste": true, + "editor.formatOnSave": true +} \ No newline at end of file diff --git a/projects/Team-7-DeDrops/interface/CHANGELOG.md b/projects/Team-7-DeDrops/interface/CHANGELOG.md new file mode 100644 index 0000000..61262a0 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/CHANGELOG.md @@ -0,0 +1,81 @@ +# Change Log + +## [1.1.0] 2021-03-19 +### Bug fixing +- Rename `master` branch to `main` +- To make a lot of our changes, we've followed the instructions from here (minus the `colors` and `font-sizes`): https://tailwindcss.com/docs/upgrading-to-v2 + - For the colors, the only change that we made, is the fact that we've added all Tailwind CSS colors to our `tailwind.config.js` files, and inside our product, all `{type}-gray-{number}` classes were renamed to `{type}-blueGray-{number}` + - After that, we've changed `{type}-blueGray-{number}` to `{type}-blueGray-{lower-number}`, i.e. (`100` became `50`, `200` became `100`, ..., `900` became `800`) + - You can achieve this, by search in your whole project for `blueGray-100` and replace it with `blueGray-50` + - Then, you search in your whole project for `blueGray-200` and replace it with `blueGray-100` + - Then, you search in your whole project for `blueGray-300` and replace it with `blueGray-200` + - Then, you search in your whole project for `blueGray-400` and replace it with `blueGray-300` + - Then, you search in your whole project for `blueGray-500` and replace it with `blueGray-400` + - Then, you search in your whole project for `blueGray-600` and replace it with `blueGray-500` + - Then, you search in your whole project for `blueGray-700` and replace it with `blueGray-600` + - Then, you search in your whole project for `blueGray-800` and replace it with `blueGray-700` + - Then, you search in your whole project for `blueGray-900` and replace it with `blueGray-800` + - For the colors, the only change that we made, is the fact that we've added all Tailwind CSS colors to our `tailwind.config.js` files, and inside our product, all `{type}-blue-{number}` classes were renamed to `{type}-lightBlue-{number}` + - For the colors, the only change that we made, is the fact that we've added all Tailwind CSS colors to our `tailwind.config.js` files, and inside our product, all `{type}-green-{number}` classes were renamed to `{type}-emerald-{number}` +- `lg:bg-transparent` is not working anymore, so we've changed it with `lg:bg-opacity-0` +- Since we've dropped the usage of custom CSS, and reverted to `Built-In CSS Support` from `NextJS`, we had to move our images inside the `public` folder, and our styles inside the `styles` folder + - All the `require` images have been replaced by simple `/img/` strings +- https://github.com/creativetimofficial/notus-angular/issues/4 +- https://github.com/creativetimofficial/notus-js/issues/4 +- https://github.com/creativetimofficial/notus-js/pull/5 +- https://github.com/creativetimofficial/notus-js/pull/6 +- https://github.com/creativetimofficial/notus-nextjs/issues/6 +- https://github.com/creativetimofficial/notus-nextjs/issues/7 +- https://github.com/creativetimofficial/notus-nextjs/issues/8 +- https://github.com/creativetimofficial/notus-react/issues/3 +- https://github.com/creativetimofficial/notus-svelte/issues/3 +- https://github.com/creativetimofficial/notus-svelte/issues/6 +- https://github.com/creativetimofficial/vue-notus/pull/4/ +### Major style changes +- The upgrade of Tailwind CSS from version 1 to version 2, will cause multiple style changes, check them out on the official Tailwind CSS websites: + - https://blog.tailwindcss.com/tailwindcss-v2 + - https://tailwindcss.com/ + - https://tailwindcss.com/docs/upgrading-to-v2 +### Deleted components +- `next.config.js` (we do not need it anymore since we now use `Built-In CSS Support` from `NextJS`) + - for the absolute imports, we've used the `jsconfig.json` file +### Added components +- `jsconfig.json` (to keep our absolute imports) +### Deleted dependencies +- `@tailwindcss/custom-forms` +- `react-google-maps` (replaced by simple Google Maps API) +- `@types/googlemaps` (dependencies of `react-google-maps`) +- `@types/markerclustererplus` (dependencies of `react-google-maps`) +- `@types/react` (dependencies of `react-google-maps`) +- `@zeit/next-css` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `@zeit/next-sass` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `node-sass` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `next-images` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `next-fonts` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `next-compose-plugins` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `path` (we'll use the default `Built-In CSS Support` from `NextJS`) +- `webpack` (we'll use the default `Built-In CSS Support` from `NextJS`) +### Added dependencies +- `@tailwindcss/forms` (replaces `@tailwindcss/custom-forms`) +- `autoprefixer` +- `postcss` +### Updated dependencies +``` +@fortawesome/fontawesome-free 5.14.0 → 5.15.3 +@popperjs/core 2.5.1 → 2.9.1 +chart.js 2.9.3 → 2.9.4 +next 9.5.3 → 10.0.9 +react 16.13.1 → 17.0.1 +@types/react 16.9.49 → 17.0.3 +react-dom 16.13.1 → 17.0.1 +react-scripts 3.4.3 → 4.0.3 +tailwindcss 1.8.10 → 2.0.4 +typescript 4.0.3 → 4.2.3 +``` +### Warning +_On a clean install there may be some warnings from request, chokidar, fsevents - they come from node_modules, and they do not affect the product at all._ + +## [1.0.0] 2020-09-29 +### Original Release +- Started project from [Tailwind Starter Kit by Creative Tim](https://www.creative-tim.com/learning-lab/tailwind-starter-kit/presentation?ref=nnjs-changelog) +- Added design from Tailwind Starter Kit by Creative Tim diff --git a/projects/Team-7-DeDrops/interface/ISSUE_TEMPLATE.md b/projects/Team-7-DeDrops/interface/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..5bceb52 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/ISSUE_TEMPLATE.md @@ -0,0 +1,13 @@ + + + diff --git a/projects/Team-7-DeDrops/interface/LICENSE.md b/projects/Team-7-DeDrops/interface/LICENSE.md new file mode 100644 index 0000000..574c727 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/LICENSE.md @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2021 Creative Tim (https://www.creative-tim.com?ref=nnjs-license) + +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. diff --git a/projects/Team-7-DeDrops/interface/README.md b/projects/Team-7-DeDrops/interface/README.md new file mode 100644 index 0000000..1ab15bd --- /dev/null +++ b/projects/Team-7-DeDrops/interface/README.md @@ -0,0 +1,11 @@ +# DeDrops Interface + +## Quick Start +deploy to localhost. +``` +yarn +yarn dev +or +npm run install +npm run dev +``` diff --git a/projects/Team-7-DeDrops/interface/components/Account.js b/projects/Team-7-DeDrops/interface/components/Account.js new file mode 100644 index 0000000..73c9de2 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Account.js @@ -0,0 +1,90 @@ +import MetaMaskOnboarding from "@metamask/onboarding"; +import { useWeb3React } from "@web3-react/core"; +import { UserRejectedRequestError } from "@web3-react/injected-connector"; +import { useEffect, useLayoutEffect, useRef, useState } from "react"; +import { injected } from "connectors"; +import useENSName from "hooks/useENSName"; +import { formatEtherscanLink, shortenHex } from "libs/web3Util"; + +const Account = ({ triedToEagerConnect }) => { + const { active, error, activate, chainId, account, setError } = + useWeb3React(); + + // initialize metamask onboarding + const onboarding = useRef(); + + console.log("account", account); + + useLayoutEffect(() => { + onboarding.current = new MetaMaskOnboarding(); + }, []); + + // manage connecting state for injected connector + const [connecting, setConnecting] = useState(false); + useEffect(() => { + if (active || error) { + setConnecting(false); + onboarding.current?.stopOnboarding(); + } + }, [active, error]); + + // const ENSName = useENSName(account); + + if (error) { + return "Use Matic Mainnet"; + } + + if (!triedToEagerConnect) { + return null; + } + + if (typeof account !== "string") { + const hasMetaMaskOrWeb3Available = + MetaMaskOnboarding.isMetaMaskInstalled() || + window?.ethereum || + window?.web3; + + return ( +
    + {hasMetaMaskOrWeb3Available ? ( + + ) : ( + + )} +
    + ); + } + + return ( +
    + {`${shortenHex(account, 4)}`} + + ); +}; + +export default Account; diff --git a/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropApply.js b/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropApply.js new file mode 100644 index 0000000..0570350 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropApply.js @@ -0,0 +1,629 @@ +import React, { useEffect, useRef, useState } from "react"; +import _ from "lodash"; + +import { AirdropContract } from "libs/contracts"; +import { useWeb3React } from "@web3-react/core"; + +import useContract from "hooks/useContract"; +import { Airdrop as AirdropABI } from "constans/abi/Airdrop"; +import { IERC20 as IERC20ABI } from "constans/abi/IERC20"; +import { toAmount, toNum, parseUnit } from "libs/web3Util"; +import getContract from "libs/getContract"; + +import { NFTMintContract, Bank1155Contract } from "libs/contracts"; + +import { DeDropsNFT as mintContractABI } from "constans/abi/DeDropsNFT"; + +import { Bank1155 as Bank1155ABI } from "constans/abi/Bank1155"; +import { parseBN } from "libs/web3Util"; + +// components + +const nftDetailInitInfoState = { + name: "", + imgUrl: "", + desc: "", + nftCount: "", +}; + +const nftDetailInitInfo2State = { + actions: [], + money: "", +}; + +export default function CardSettings() { + const { library, account } = useWeb3React(); + + const [nftDetailList, setNftDetailList] = useState([]); + + // mint contract instance + const nftContract = useContract(NFTMintContract, mintContractABI, account); + + // bank 1155 contract instance + const bank1155Contract = useContract(Bank1155Contract, Bank1155ABI, account); + + async function getNftDetail(nftID) { + const nftData = await nftContract.idToItem(nftID); + + // console.log("nftData", nftID, nftData); + const nftDataInfo = nftData.info + ? JSON.parse(nftData.info) + : nftDetailInitInfoState; + const nftDataCondition = nftData.info2 + ? JSON.parse(nftData.info2) + : nftDetailInitInfo2State; + + // nft 已领取数量 + let claimedCount = await bank1155Contract.tokenUserBalance( + NFTMintContract, + nftID, + account + ); + + // console.log("claimedCount", parseBN(claimedCount)); + claimedCount = parseBN(claimedCount); + + if (nftDataInfo.imgUrl === "") { + nftDataInfo.imgUrl = + "https://miro.medium.com/max/1400/1*PfyeIplM0nkWwiGgkrYCUQ.png"; + } + + console.log(nftID, { + ...nftDataInfo, + ...nftDataCondition, + claimedCount, + }); + + if (nftData.info === "" || nftData.info2 === "") { + // 信息不全,不显示 + return; + } else { + return { + id: nftID, + ...nftDataInfo, + ...nftDataCondition, + claimedCount, + }; + } + } + + useEffect(() => { + (async () => { + if (nftContract) { + // console.log(nftContract); + let nftCount = await nftContract.length(); + nftCount = parseBN(nftCount); + console.log("nftCount", nftCount); + + if (nftCount > 0) { + for (const i of _.range(1, nftCount + 1)) { + console.log("nft ", i); + const detail = await getNftDetail(i); + if (detail) { + nftDetailList.push(detail); + // setNftDetailList([...nftDetailList, detail]); + } + } + + console.log("nftDetailList", nftDetailList); + + setNftDetailList([...nftDetailList]); + } + + // setNftDetail({ + // ...nftDataInfo, + // ...nftDataCondition, + // claimedCount, + // }); + } + })(); + }, [nftContract, account]); + + // nft conditions + const [nftCon, setNftCon] = useState([]); + + // 空投活动名称 + const nameRef = useRef(); + + // 空投活动图片 + const imgUrlRef = useRef(); + + // 空投活动描述 + const descRef = useRef(); + + // 空投项目网址 + const websiteRef = useRef(); + + // 空投项目twitter + const twitterRef = useRef(); + + // 空投项目telegram + const telegramRef = useRef(); + + // 空投 token 地址 + const tokenAddrRef = useRef(); + + // 空投 token 数量 + const tokenAmountRef = useRef(); + + // nft 条件 + const nftConRef = useRef(); + + // 空投 token 可领取的地址数量 + const tokenClaimableCountRef = useRef(); + + // 空投开始时间 + const startTimeRef = useRef(); + + // 空投结束时间 + const endTimeRef = useRef(); + + // airdrop contract instance + const airdropContractIns = useContract(AirdropContract, AirdropABI, account); + + const handleSubmit = async () => { + const info = { + name: nameRef.current.value, + imgUrl: imgUrlRef.current.value, + desc: descRef.current.value, + website: websiteRef.current.value, + twitter: twitterRef.current.value, + telegram: telegramRef.current.value, + }; + + // 空投地址条件: 满足 nft id list + const condition = nftCon; + + const airdrop = { + token: tokenAddrRef.current.value, + tokenAmount: tokenAmountRef.current.value, + tokenClaimableCount: tokenClaimableCountRef.current.value, + startTime: startTimeRef.current.value, + endTime: endTimeRef.current.value, + }; + + // const mintInfo = { + // name: nftName.current.value, + // imgUrl: nftImgUrl.current.value, + // desc: nftDesc, + // nftCount: nftCount.current.value, + // }; + // const condition = { + // actions: nftOnChainConCheckbox.current.checked ? onChainCon : null, + // money: nftMoneyCheckbox.current.checked ? nftMoney.current.value : 0, + // }; + // console.log(mintInfo); + // // console.log(nftOnChainConCheckbox.current.checked); + // console.log(condition); + // // 要上链的数据 + // const data = { + // amount: nftCount, + // info: mintInfo, + // info2: condition, + // }; + // erc20 contrasct instance + const erc20ContractIns = getContract( + tokenAddrRef.current.value, + IERC20ABI, + account, + library + ); + // console.log(erc20ContractIns); + + const allowance = await erc20ContractIns.allowance( + account, + AirdropContract + ); + + console.log("allowance", toNum(allowance)); + console.log("tokenAmount", toNum(airdrop.tokenAmount)); + + if (toNum(allowance) >= toNum(airdrop.tokenAmount)) { + console.log( + tokenAddrRef.current.value, + toAmount(airdrop.tokenAmount, 18), + JSON.stringify(info), + JSON.stringify({ airdrop, condition }) + ); + + // return; + // 提交上链 + const res = await airdropContractIns.drop( + tokenAddrRef.current.value, + toAmount(airdrop.tokenAmount, 18), + JSON.stringify(info), + JSON.stringify({ airdrop, condition }) + ); + + console.log(res); + if (res.hash) { + window.alert("提交成功,等待上链..."); + } + } else { + // approve token + const resApprove = await erc20ContractIns.approve( + AirdropContract, + parseUnit(airdrop.tokenAmount) + ); + + console.log(resApprove); + // window.alert("提交成功,等待上链..."); + + if (resApprove.hash) { + window.alert("提交成功,等待上链..."); + } + } + }; + + const handleAddNtfCon = () => { + const newNftConItem = nftConRef.current.value; + + nftCon.push(newNftConItem); + + const newNtfCon = _.union(nftCon, newNftConItem); + + console.log("newNtfCon", newNtfCon); + setNftCon(newNtfCon); + }; + + const handleRemoveNftCon = (key) => { + console.log(key); + _.remove(nftCon, (item) => item === key); + setNftCon([...nftCon]); + }; + + //平均每个地址获得空投TOKEN 数量 + const perAddrToken = () => { + try { + let tokenAmount = Number(tokenAmountRef.current.value); + let tokenClaimableCount = Number(tokenClaimableCountRef.current.value); + console.log("perAddrToken", tokenAmount / tokenClaimableCount); + return tokenAmount / tokenClaimableCount; + } catch (e) { + console.log("perAddrToken error"); + return ""; + } + }; + + return ( + <> +
    +
    +
    +
    发起空投
    +
    +
    +
    +
    + {/* 空投项目信息 */} +
    + 空投项目信息 +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    + + {/* 空投地址 */} +
    + 空投地址条件 +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
      + {nftDetailList.length > 0 && + nftCon.map((id) => { + const target = _.find( + nftDetailList, + (item) => item.id.toString() === id + ); + + console.log(target, nftCon, nftDetailList); + + return ( +
    • +
      + + {target.name} + (已领取/总数: {target.claimedCount}/ + {target.nftCount}) + +
      +
      + +
      +
    • + ); + })} +
    + + {/*
    + 可空投地址总数: 200 +
    */} +
    +
    +
    + +
    + +
    + 空投信息 +
    +
    +
    +
    + + +
    +
    + +
    +
    + + +
    +
    +
    +
    +
    + + {/*
    +
    + + +
    +
    */} + +
    +
    + + +
    +
    + +
    +
    +
    + +
    +
    + + +
    +
    +
    +
    + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    + + ); +} diff --git a/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropsTable.js b/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropsTable.js new file mode 100644 index 0000000..b565409 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Cards/CardAirdropsTable.js @@ -0,0 +1,156 @@ +import React from "react"; +import Link from "next/link"; +import PropTypes from "prop-types"; + +import { tabList } from "libs/airdropConfig"; +import { tableHeads } from "libs/airdropConfig"; + +const fakeData = [ + { + project: "ABC", + participatedAddrCount: "100", + totalAirdropAddrCount: "1000", + totalAirdropAmount: "500000", + startTime: "2021.7.29 12:00", + endTime: "2021.8.1 12:00", + }, + { + project: "CBA", + participatedAddrCount: "100", + totalAirdropAddrCount: "1000", + totalAirdropAmount: "500000", + startTime: "2021.7.29 12:00", + endTime: "2021.8.1 12:00", + }, +]; + +const tabListKeys = tabList.map((item) => item.key); +tabListKeys.splice(0, 1); +// components + +const renderTitle = (typeKey) => { + if (typeKey) { + const title = tabList.find((item) => item.key === typeKey).text; + return

    {title}

    ; + } +}; + +const renderTableHead = (typeKey, TableHead) => { + if (typeKey === "ongoing") { + if (TableHead.key === "startTime") { + return null; + } + } + + if (typeKey === "upcoming") { + if (TableHead.key === "endTime") { + return null; + } + } + + return ( + + {TableHead.text} + + ); +}; + +const renderTableData = (typeKey, rowData, index) => { + return ( + + + + {rowData.name} + + {/* + {rowData.participatedAddrCount} + */} + + {rowData.airdrop.tokenClaimableCount} + + + {rowData.airdrop.tokenAmount} + + {typeKey !== "ongoing" ? ( + + {rowData.airdrop.startTime} + + ) : null} + {typeKey !== "upcoming" ? ( + + {rowData.airdrop.endTime} + + ) : null} + + + ); +}; + +export default function AirdropsCardTable({ color, typeKey, list }) { + return ( + <> +
    + {/* {typeKey && ( +
    +
    +
    + {renderTitle(typeKey)} +
    +
    +
    + )} */} + +
    + {/* Projects table */} + + + + {tableHeads.map((head) => renderTableHead(typeKey, head))} + + + + {list.length > 0 + ? list.map((data, index) => + renderTableData(typeKey, data, index) + ) + : // + null} + +
    + //
    + // + //
    + //

    + // Loading... + //

    + //
    +
    +
    + + ); +} + +AirdropsCardTable.defaultProps = { + color: "light", + typeKey: "", + list: [], +}; + +AirdropsCardTable.propTypes = { + color: PropTypes.oneOf(["light", "dark"]), + typeKey: PropTypes.oneOf(["", ...tabListKeys]), +}; diff --git a/projects/Team-7-DeDrops/interface/components/Cards/CardNFTItem.js b/projects/Team-7-DeDrops/interface/components/Cards/CardNFTItem.js new file mode 100644 index 0000000..c1803a6 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Cards/CardNFTItem.js @@ -0,0 +1,45 @@ +import Link from "next/link"; +import React from "react"; +import { fakeData } from "libs/nftConfig"; + +export default function CardNFTItem({ data }) { + return ( + data && + data.id && ( +
    + +
    + + 已领取/总数: {data.claimedCount} / {data.nftCount} + + +
    +

    + {data.name} +

    + + {data.key && ( + + {data.tag} + + )} + +

    + {data.desc} +

    +
    +
    + +
    + ) + ); +} + +CardNFTItem.defaultProps = { + data: fakeData[0], + tag: "dedrops", +}; diff --git a/projects/Team-7-DeDrops/interface/components/Cards/CardNFTMint.js b/projects/Team-7-DeDrops/interface/components/Cards/CardNFTMint.js new file mode 100644 index 0000000..28a02fa --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Cards/CardNFTMint.js @@ -0,0 +1,331 @@ +import React, { useRef, useState } from "react"; + +import { mintConditions } from "libs/nftConfig"; +import { NFTMintContract } from "libs/contracts"; +import { useWeb3React } from "@web3-react/core"; + +import _ from "lodash"; + +import useContract from "hooks/useContract"; +import { DeDropsNFT as mintContractABI } from "constans/abi/DeDropsNFT"; +import { toAmount } from "libs/web3Util"; + +// components + +export default function CardNFTMint() { + const { library, account } = useWeb3React(); + + const nftName = useRef(); + const nftCount = useRef(); + const nftImgUrl = useRef(); + const nftDesc = useRef(); + + // 链上条件 + const nftOnChainConCheckbox = useRef(); + + const nftOnChainCon = useRef(); + + // 条件最小值 + const nftOnChainConCount = useRef(); + + // 链上资产 + const nftMoneyCheckbox = useRef(); + + const nftMoney = useRef(); + + // on-chain action conditions + const [onChainCon, setOnChainCon] = useState([]); + + // mint contract instance + const mintContract = useContract(NFTMintContract, mintContractABI, account); + + const handleSubmit = async () => { + const mintInfo = { + name: nftName.current.value, + imgUrl: nftImgUrl.current.value, + desc: nftDesc.current.value, + nftCount: nftCount.current.value, + }; + + const condition = { + actions: nftOnChainConCheckbox.current.checked ? onChainCon : null, + money: nftMoneyCheckbox.current.checked ? nftMoney.current.value : 0, + }; + + console.log(mintInfo); + + // console.log(nftOnChainConCheckbox.current.checked); + + console.log(condition); + + // 要上链的数据 + const data = { + amount: nftCount, + info: mintInfo, + info2: condition, + }; + + // 提交上链 + const res = await mintContract.mint( + toAmount(nftCount.current.value), + JSON.stringify(mintInfo), + JSON.stringify(condition) + ); + console.log(res); + }; + + const handleAddOnChainAction = () => { + console.log(nftOnChainCon.current.value); + + onChainCon.push({ + key: nftOnChainCon.current.value, + count: nftOnChainConCount.current.value, + }); + + const newOnChainCon = _.unionBy(onChainCon, (item) => item.key); + + console.log("newOnChainCon", newOnChainCon); + setOnChainCon(newOnChainCon); + }; + + const handleRemoveOnChainAction = (key) => { + console.log(key); + _.remove(onChainCon, (item) => item.key === key); + setOnChainCon([...onChainCon]); + }; + + return ( + <> +
    +
    +
    +
    铸造 NFT
    +
    +
    +
    +
    + {/* NFT 信息 */} +
    + NFT 信息 +
    +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    + +
    +
    + + +
    +
    + +
    + + {/* 空投地址 */} +
    + NFT申领条件 +
    +
    +
    +
    + + +
    +
    + +
    +
    + + +
    + +
    + +
    +
    +
    +
    +
    + +
    +
    +
    +
      + {onChainCon.map((item) => ( +
    • +
      + + {_.find(mintConditions, { key: item.key }).text} + ,至少 {item.count} 次 + +
      +
      + +
      +
    • + ))} +
    +
    +
    +
    + {/* end: 参与过的链上活动 */} + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + +
    + + + USD +
    +
    +
    +
    + +
    + +
    +
    + +
    +
    +
    +
    +
    + + ); +} diff --git a/projects/Team-7-DeDrops/interface/components/ETHBalance.js b/projects/Team-7-DeDrops/interface/components/ETHBalance.js new file mode 100644 index 0000000..c870883 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/ETHBalance.js @@ -0,0 +1,11 @@ +import { useWeb3React } from "@web3-react/core"; +import useETHBalance from "../hooks/useETHBalance"; + +const ETHBalance = () => { + const { account } = useWeb3React(); + const { data } = useETHBalance(account); + + return

    Balance: Ξ{data}

    ; +}; + +export default ETHBalance; diff --git a/projects/Team-7-DeDrops/interface/components/Footers/Footer.js b/projects/Team-7-DeDrops/interface/components/Footers/Footer.js new file mode 100644 index 0000000..696e071 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Footers/Footer.js @@ -0,0 +1,62 @@ +import React from "react"; + +export default function Footer() { + return ( + <> +
    +
    +
    +
    +
    +

    Let's DeDrops!

    +
    + 基于链上数据的去中心化空投平台 +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + Copyright © {new Date().getFullYear()} DeDrops +
    +
    +
    +
    +
    + + ); +} diff --git a/projects/Team-7-DeDrops/interface/components/Navbars/IndexNavbar.js b/projects/Team-7-DeDrops/interface/components/Navbars/IndexNavbar.js new file mode 100644 index 0000000..f317852 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Navbars/IndexNavbar.js @@ -0,0 +1,82 @@ +import React from "react"; +import Link from "next/link"; +// components +import Account from "components/Account"; + +import { useWeb3React } from "@web3-react/core"; +import ETHBalance from "components/ETHBalance"; +import useEagerConnect from "hooks/useEagerConnect"; + +// import IndexDropdown from "components/Dropdowns/IndexDropdown.js"; + +export default function Navbar(props) { + const [navbarOpen, setNavbarOpen] = React.useState(false); + + const { account, library } = useWeb3React(); + + const triedToEagerConnect = useEagerConnect(); + + const isConnected = typeof account === "string" && !!library; + + return ( + <> + + + ); +} diff --git a/projects/Team-7-DeDrops/interface/components/Tabs/AirdropsTabs.js b/projects/Team-7-DeDrops/interface/components/Tabs/AirdropsTabs.js new file mode 100644 index 0000000..ebd17cb --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Tabs/AirdropsTabs.js @@ -0,0 +1,43 @@ +import React from "react"; +import { tabList } from "libs/airdropConfig"; + +const AirdropsTabs = ({ openTab, handleSetOpenTab }) => { + const tabListItems = tabList.map((item) => ( +
  • + { + e.preventDefault(); + handleSetOpenTab(item.key); + }} + data-toggle="tab" + href={`#${item.key}`} + role="tablist" + > + {item.text} + +
  • + )); + + return ( + <> +
    +
    +
      + {tabListItems} +
    +
    +
    + + ); +}; + +export default AirdropsTabs; diff --git a/projects/Team-7-DeDrops/interface/components/Tabs/NFTTabs.js b/projects/Team-7-DeDrops/interface/components/Tabs/NFTTabs.js new file mode 100644 index 0000000..bfe0e01 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/components/Tabs/NFTTabs.js @@ -0,0 +1,43 @@ +import React from "react"; +import { tabList } from "libs/nftConfig"; + +const AirdropsTabs = ({ openTab, handleSetOpenTab }) => { + const tabListItems = tabList.map((item) => ( +
  • + { + e.preventDefault(); + handleSetOpenTab(item.key); + }} + data-toggle="tab" + href={`#${item.key}`} + role="tablist" + > + {item.text} + +
  • + )); + + return ( + <> +
    +
    +
      + {tabListItems} +
    +
    +
    + + ); +}; + +export default AirdropsTabs; diff --git a/projects/Team-7-DeDrops/interface/connectors.js b/projects/Team-7-DeDrops/interface/connectors.js new file mode 100644 index 0000000..f455d46 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/connectors.js @@ -0,0 +1,5 @@ +import { InjectedConnector } from "@web3-react/injected-connector"; + +export const injected = new InjectedConnector({ + supportedChainIds: [137], +}); diff --git a/projects/Team-7-DeDrops/interface/constans/abi/Airdrop.js b/projects/Team-7-DeDrops/interface/constans/abi/Airdrop.js new file mode 100644 index 0000000..3f28391 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/constans/abi/Airdrop.js @@ -0,0 +1,184 @@ +export const Airdrop = [ + { + inputs: [ + { + internalType: "address", + name: "bankAddress", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "info", + type: "string", + }, + { + indexed: false, + internalType: "string", + name: "info2", + type: "string", + }, + ], + name: "Drop", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + inputs: [], + name: "bank", + outputs: [ + { + internalType: "contract Bank20", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "string", + name: "info", + type: "string", + }, + { + internalType: "string", + name: "info2", + type: "string", + }, + ], + name: "drop", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "idToItem", + outputs: [ + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "string", + name: "info", + type: "string", + }, + { + internalType: "string", + name: "info2", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "length", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/constans/abi/Bank1155.js b/projects/Team-7-DeDrops/interface/constans/abi/Bank1155.js new file mode 100644 index 0000000..035e1e0 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/constans/abi/Bank1155.js @@ -0,0 +1,467 @@ +export const Bank1155 = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "to", + type: "address", + }, + ], + name: "Claim", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: false, + internalType: "address", + name: "to", + type: "address", + }, + ], + name: "Password", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Withdraw", + type: "event", + }, + { + inputs: [], + name: "CLAIM_TYPEHASH", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PASSWORD_TYPEHASH", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "claim", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256[]", + name: "ids", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "values", + type: "uint256[]", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onERC1155BatchReceived", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "onERC1155Received", + outputs: [ + { + internalType: "bytes4", + name: "", + type: "bytes4", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "string", + name: "psw", + type: "string", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "password", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "uint256", + name: "", + type: "uint256", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "tokenUserBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/constans/abi/Bank20.js b/projects/Team-7-DeDrops/interface/constans/abi/Bank20.js new file mode 100644 index 0000000..3495590 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/constans/abi/Bank20.js @@ -0,0 +1,343 @@ +export const Bank20 = [ + { + inputs: [], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Claim", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Deposit", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Password", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "token", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Withdraw", + type: "event", + }, + { + inputs: [], + name: "CLAIM_TYPEHASH", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "DOMAIN_SEPARATOR", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "PASSWORD_TYPEHASH", + outputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "claim", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "deposit", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes32", + name: "", + type: "bytes32", + }, + ], + name: "nonces", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "string", + name: "psw", + type: "string", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + { + internalType: "uint256", + name: "deadline", + type: "uint256", + }, + { + internalType: "uint8", + name: "v", + type: "uint8", + }, + { + internalType: "bytes32", + name: "r", + type: "bytes32", + }, + { + internalType: "bytes32", + name: "s", + type: "bytes32", + }, + ], + name: "password", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + { + internalType: "address", + name: "", + type: "address", + }, + ], + name: "tokenUserBalance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "token", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "withdraw", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/constans/abi/DeDropsNFT.js b/projects/Team-7-DeDrops/interface/constans/abi/DeDropsNFT.js new file mode 100644 index 0000000..dedf3d3 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/constans/abi/DeDropsNFT.js @@ -0,0 +1,486 @@ +export const DeDropsNFT = [ + { + inputs: [ + { + internalType: "address", + name: "bankAddress", + type: "address", + }, + ], + stateMutability: "nonpayable", + type: "constructor", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "account", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: false, + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "ApprovalForAll", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + indexed: false, + internalType: "string", + name: "info", + type: "string", + }, + { + indexed: false, + internalType: "string", + name: "info2", + type: "string", + }, + ], + name: "Drop", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "previousOwner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "OwnershipTransferred", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256[]", + name: "ids", + type: "uint256[]", + }, + { + indexed: false, + internalType: "uint256[]", + name: "values", + type: "uint256[]", + }, + ], + name: "TransferBatch", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "operator", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "TransferSingle", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: "string", + name: "value", + type: "string", + }, + { + indexed: true, + internalType: "uint256", + name: "id", + type: "uint256", + }, + ], + name: "URI", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address[]", + name: "accounts", + type: "address[]", + }, + { + internalType: "uint256[]", + name: "ids", + type: "uint256[]", + }, + ], + name: "balanceOfBatch", + outputs: [ + { + internalType: "uint256[]", + name: "", + type: "uint256[]", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "bank", + outputs: [ + { + internalType: "contract Bank1155", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "idToItem", + outputs: [ + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "string", + name: "info", + type: "string", + }, + { + internalType: "string", + name: "info2", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + { + internalType: "address", + name: "operator", + type: "address", + }, + ], + name: "isApprovedForAll", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "length", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "string", + name: "info", + type: "string", + }, + { + internalType: "string", + name: "info2", + type: "string", + }, + ], + name: "mint", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [], + name: "owner", + outputs: [ + { + internalType: "address", + name: "", + type: "address", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "renounceOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256[]", + name: "ids", + type: "uint256[]", + }, + { + internalType: "uint256[]", + name: "amounts", + type: "uint256[]", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeBatchTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "from", + type: "address", + }, + { + internalType: "address", + name: "to", + type: "address", + }, + { + internalType: "uint256", + name: "id", + type: "uint256", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + { + internalType: "bytes", + name: "data", + type: "bytes", + }, + ], + name: "safeTransferFrom", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "operator", + type: "address", + }, + { + internalType: "bool", + name: "approved", + type: "bool", + }, + ], + name: "setApprovalForAll", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "bytes4", + name: "interfaceId", + type: "bytes4", + }, + ], + name: "supportsInterface", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "newOwner", + type: "address", + }, + ], + name: "transferOwnership", + outputs: [], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + name: "uri", + outputs: [ + { + internalType: "string", + name: "", + type: "string", + }, + ], + stateMutability: "view", + type: "function", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/constans/abi/IERC20.js b/projects/Team-7-DeDrops/interface/constans/abi/IERC20.js new file mode 100644 index 0000000..cdc07ea --- /dev/null +++ b/projects/Team-7-DeDrops/interface/constans/abi/IERC20.js @@ -0,0 +1,185 @@ +export const IERC20 = [ + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "owner", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "spender", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Approval", + type: "event", + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: "address", + name: "from", + type: "address", + }, + { + indexed: true, + internalType: "address", + name: "to", + type: "address", + }, + { + indexed: false, + internalType: "uint256", + name: "value", + type: "uint256", + }, + ], + name: "Transfer", + type: "event", + }, + { + inputs: [ + { + internalType: "address", + name: "owner", + type: "address", + }, + { + internalType: "address", + name: "spender", + type: "address", + }, + ], + name: "allowance", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "spender", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "approve", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "account", + type: "address", + }, + ], + name: "balanceOf", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [], + name: "totalSupply", + outputs: [ + { + internalType: "uint256", + name: "", + type: "uint256", + }, + ], + stateMutability: "view", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transfer", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, + { + inputs: [ + { + internalType: "address", + name: "sender", + type: "address", + }, + { + internalType: "address", + name: "recipient", + type: "address", + }, + { + internalType: "uint256", + name: "amount", + type: "uint256", + }, + ], + name: "transferFrom", + outputs: [ + { + internalType: "bool", + name: "", + type: "bool", + }, + ], + stateMutability: "nonpayable", + type: "function", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/hooks/useBlockNumber.js b/projects/Team-7-DeDrops/interface/hooks/useBlockNumber.js new file mode 100644 index 0000000..e9480b7 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useBlockNumber.js @@ -0,0 +1,17 @@ +import { useWeb3React } from "@web3-react/core"; +import useSWR from "swr"; + +function getBlockNumber(library) { + return async () => { + return library.getBlockNumber(); + }; +} + +export default function useBlockNumber() { + const { library } = useWeb3React(); + const shouldFetch = !!library; + + return useSWR(shouldFetch ? ["BlockNumber"] : null, getBlockNumber(library), { + refreshInterval: 10 * 1000, + }); +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useContract.js b/projects/Team-7-DeDrops/interface/hooks/useContract.js new file mode 100644 index 0000000..f542eeb --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useContract.js @@ -0,0 +1,19 @@ +import { Contract } from "@ethersproject/contracts"; +import { useWeb3React } from "@web3-react/core"; +import { useMemo } from "react"; + +export default function useContract(address, ABI, withSigner = false) { + const { library, account } = useWeb3React(); + + return useMemo( + () => + !!address && !!ABI && !!library + ? new Contract( + address, + ABI, + withSigner ? library.getSigner(account).connectUnchecked() : library + ) + : undefined, + [address, ABI, withSigner, library, account] + ); +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useENSName.js b/projects/Team-7-DeDrops/interface/hooks/useENSName.js new file mode 100644 index 0000000..60a465b --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useENSName.js @@ -0,0 +1,29 @@ +import { useWeb3React } from "@web3-react/core"; +import { useEffect, useState } from "react"; + +export default function useENSName(address) { + const { library, chainId } = useWeb3React(); + const [ENSName, setENSName] = useState(""); + + useEffect(() => { + if (library && typeof address === "string") { + let stale = false; + + library + .lookupAddress(address) + .then((name) => { + if (!stale && typeof name === "string") { + setENSName(name); + } + }) + .catch(() => {}); + + return () => { + stale = true; + setENSName(""); + }; + } + }, [library, address, chainId]); + + return ENSName; +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useERC20Contract.js b/projects/Team-7-DeDrops/interface/hooks/useERC20Contract.js new file mode 100644 index 0000000..7a7ac6c --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useERC20Contract.js @@ -0,0 +1,11 @@ +import useContract from "./useContract"; +import { IERC20 as IERC20ABI } from "constans/abi/IERC20"; + +/** + * @name useERC20Contract + * @description Uses the new Human-Readable ABI format from ethers v5. Supports ERC20 contract functions of 'balanceOf', 'transfer', and the 'Transfer' event itself. + * @param {string} tokenAddress + */ +export default function useERC20Contract(tokenAddress) { + return useContract(tokenAddress, IERC20ABI); +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useETHBalance.js b/projects/Team-7-DeDrops/interface/hooks/useETHBalance.js new file mode 100644 index 0000000..b6faadf --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useETHBalance.js @@ -0,0 +1,28 @@ +import { useWeb3React } from "@web3-react/core"; +import useSWR from "swr"; +import { parseBalance } from "libs/web3Util"; +import useKeepSWRDataLiveAsBlocksArrive from "./useKeepSWRDataLiveAsBlocksArrive"; + +function getETHBalance(library) { + return async (address, _) => { + return library.getBalance(address).then((balance) => parseBalance(balance)); + }; +} + +export default function useETHBalance(address, suspense = false) { + const { library, chainId } = useWeb3React(); + + const shouldFetch = typeof address === "string" && !!library; + + const result = useSWR( + shouldFetch ? [address, chainId, "ETHBalance"] : null, + getETHBalance(library), + { + suspense, + } + ); + + useKeepSWRDataLiveAsBlocksArrive(result.mutate); + + return result; +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useEagerConnect.js b/projects/Team-7-DeDrops/interface/hooks/useEagerConnect.js new file mode 100644 index 0000000..b4ed1c8 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useEagerConnect.js @@ -0,0 +1,30 @@ +import { useWeb3React } from "@web3-react/core"; +import { useEffect, useState } from "react"; +import { injected } from "../connectors"; + +export default function useEagerConnect() { + const { activate, active } = useWeb3React(); + + const [tried, setTried] = useState(false); + + useEffect(() => { + injected.isAuthorized().then((isAuthorized) => { + if (isAuthorized) { + activate(injected, undefined, true).catch(() => { + setTried(true); + }); + } else { + setTried(true); + } + }); + }, [activate]); + + // if the connection worked, wait until we get confirmation of that to flip the flag + useEffect(() => { + if (!tried && active) { + setTried(true); + } + }, [tried, active]); + + return tried; +} diff --git a/projects/Team-7-DeDrops/interface/hooks/useKeepSWRDataLiveAsBlocksArrive.js b/projects/Team-7-DeDrops/interface/hooks/useKeepSWRDataLiveAsBlocksArrive.js new file mode 100644 index 0000000..1f4c862 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/useKeepSWRDataLiveAsBlocksArrive.js @@ -0,0 +1,18 @@ +import { useEffect, useRef } from "react"; +import useBlockNumber from "./useBlockNumber"; + +export default function useKeepSWRDataLiveAsBlocksArrive(mutate) { + // because we don't care about the referential identity of mutate, just bind it to a ref + const mutateRef = useRef(mutate); + + useEffect(() => { + mutateRef.current = mutate; + }); + + // then, whenever a new block arrives, trigger a mutation + const { data } = useBlockNumber(); + + useEffect(() => { + mutateRef.current(); + }, [data]); +} diff --git a/projects/Team-7-DeDrops/interface/hooks/usePersonalSign.js b/projects/Team-7-DeDrops/interface/hooks/usePersonalSign.js new file mode 100644 index 0000000..e1c7979 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/hooks/usePersonalSign.js @@ -0,0 +1,12 @@ +import { useWeb3React } from "@web3-react/core"; + +export const hexlify = (message) => + "0x" + Buffer.from(message, "utf8").toString("hex"); + +export default function usePersonalSign() { + const { library, account } = useWeb3React(); + + return async (message) => { + return library.send("personal_sign", [hexlify(message), account]); + }; +} diff --git a/projects/Team-7-DeDrops/interface/jsconfig.json b/projects/Team-7-DeDrops/interface/jsconfig.json new file mode 100644 index 0000000..36aa1a4 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/jsconfig.json @@ -0,0 +1,5 @@ +{ + "compilerOptions": { + "baseUrl": "." + } +} diff --git a/projects/Team-7-DeDrops/interface/layouts/Main.js b/projects/Team-7-DeDrops/interface/layouts/Main.js new file mode 100644 index 0000000..d00292a --- /dev/null +++ b/projects/Team-7-DeDrops/interface/layouts/Main.js @@ -0,0 +1,21 @@ +import React from "react"; + +// components + +import IndexNavbar from "components/Navbars/IndexNavbar.js"; + +import Footer from "components/Footers/Footer.js"; + +export default function Auth({ children }) { + return ( + <> + +
    +
    +
    {children}
    +
    +
    +
    + + ); +} diff --git a/projects/Team-7-DeDrops/interface/libs/airdropConfig.js b/projects/Team-7-DeDrops/interface/libs/airdropConfig.js new file mode 100644 index 0000000..40f1d69 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/libs/airdropConfig.js @@ -0,0 +1,49 @@ +export const tabList = [ + // { + // key: "overview", + // text: "概览", + // }, + { + key: "ongoing", + text: "正在进行", + }, + { + key: "upcoming", + text: "即将开始", + }, + { + key: "ended", + text: "已结束", + }, + { + key: "participated", + text: "我参与的", + }, +]; + +export const tableHeads = [ + { + key: "project", + text: "空投项目", + }, + // { + // key: "participatedAddrCount", + // text: "参与地址数", + // }, + { + key: "totalAirdropAddrCount", + text: "空投地址总数", + }, + { + key: "totalAirdropAmount", + text: "空投总量", + }, + { + key: "startTime", + text: "开始时间", + }, + { + key: "endTime", + text: "结束时间", + }, +]; diff --git a/projects/Team-7-DeDrops/interface/libs/contracts.js b/projects/Team-7-DeDrops/interface/libs/contracts.js new file mode 100644 index 0000000..8249505 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/libs/contracts.js @@ -0,0 +1,10 @@ +export const NFTMintContract = "0xa96e19Fd3342a52eff889EF729a81ba1Ed8a60E0"; + +// 空投合约 +export const AirdropContract = "0xF2F2ed5f790f33e33f48D0e33addb33B002Ab4DF"; + +// Bank 20, 用于存空投的token +export const Bank20Contract = "0xF2F2ed5f790f33e33f48D0e33addb33B002Ab4DF"; + +// Bank nft 1155 +export const Bank1155Contract = "0xc44dc52e259352B6C26AfFcEf9ce280836AD6860"; diff --git a/projects/Team-7-DeDrops/interface/libs/getContract.js b/projects/Team-7-DeDrops/interface/libs/getContract.js new file mode 100644 index 0000000..89446a7 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/libs/getContract.js @@ -0,0 +1,13 @@ +import { Contract } from "@ethersproject/contracts"; + +export default function GetContract(address, ABI, account, library) { + const contractIns = + !!address && !!ABI && !!library + ? new Contract( + address, + ABI, + library.getSigner(account).connectUnchecked() + ) + : undefined; + return contractIns; +} diff --git a/projects/Team-7-DeDrops/interface/libs/nftConfig.js b/projects/Team-7-DeDrops/interface/libs/nftConfig.js new file mode 100644 index 0000000..b15e925 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/libs/nftConfig.js @@ -0,0 +1,126 @@ +export const tabList = [ + { + key: "all", + text: "全部", + }, + { + key: "dedrops", + text: "DeDrops", + }, + { + key: "chainlink", + text: "Chainlink", + }, + { + key: "thegraph", + text: "TheGraph", + }, +]; + +export const mintConditions = [ + { + key: "sushi-swap", + text: "Sushiswap 交易", + }, + { + key: "uniswap-swap", + text: "Uniswap 交易", + }, + { + key: "uniswap-addlp", + text: "Uniswap 添加流动性", + }, + { + key: "sushi-gov", + text: "Sushi 治理", + }, + { + key: "gitcoin-grant", + text: "Gitcoin grant 捐赠", + }, + { + key: "l2-hack", + text: "参与 Layer2 Hackthon 2021", + }, +]; + +export const fakeData = [ + { + id: "0", + name: "资深 Defi 玩家", + img: "https://images.unsplash.com/photo-1623973792500-d2fa0aad9723?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2450&q=80", + desc: "热衷在DeFi世界里进行探索的玩家", + claimed: "10", + total: "100", + contract: "asdfasdfasdfasdfsdasdfasdfasdf", + mintBy: "adfasdfasdf2314234234dfdfasdf", + tag: "DeDrops", + key: "dedrops", + claimCondition: [ + { + id: "uniswap-swap", + count: "1", + }, + { + id: "uniswap-addlp", + count: "1", + }, + { + id: "sushi-gov", + count: "1", + }, + ], + }, + { + id: "1", + name: "Graph 开发者", + img: "https://images.unsplash.com/photo-1510915228340-29c85a43dcfe?ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=2550&q=80", + desc: "TheGraph 的高级玩家", + claimed: "10", + total: "100", + contract: "asdfasdfasdfasdfsdasdfasdfasdf", + mintBy: "adfasdfasdf2314234234dfdfasdf", + tag: "TheGraph", + key: "thegraph", + claimCondition: [ + { + id: "uniswap-swap", + count: "1", + }, + { + id: "uniswap-addlp", + count: "1", + }, + { + id: "sushi-gov", + count: "1", + }, + ], + }, + { + id: "2", + name: "L2 Hackthon 参与者", + img: "https://images.unsplash.com/photo-1602529710584-458a995c8785?ixlib=rb-1.2.1&ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&auto=format&fit=crop&w=2550&q=80", + desc: "L2 Hackthon 参赛选手,观众,评委等", + claimed: "10", + total: "100", + contract: "asdfasdfasdfasdfsdasdfasdfasdf", + mintBy: "adfasdfasdf2314234234dfdfasdf", + tag: "Chainlink", + key: "chainlink", + claimCondition: [ + { + id: "uniswap-swap", + count: "1", + }, + { + id: "uniswap-addlp", + count: "1", + }, + { + id: "sushi-gov", + count: "1", + }, + ], + }, +]; diff --git a/projects/Team-7-DeDrops/interface/libs/web3Util.js b/projects/Team-7-DeDrops/interface/libs/web3Util.js new file mode 100644 index 0000000..038d81f --- /dev/null +++ b/projects/Team-7-DeDrops/interface/libs/web3Util.js @@ -0,0 +1,94 @@ +import { formatUnits, parseUnits } from "@ethersproject/units"; +import { ethers } from "ethers"; +import { BigNumber } from "bignumber.js"; + +export function shortenHex(hex, length = 4) { + return `${hex.substring(0, length + 2)}…${hex.substring( + hex.length - length + )}`; +} + +const ETHERSCAN_PREFIXES = { + 1: "", + 3: "ropsten.", + 4: "rinkeby.", + 5: "goerli.", + 42: "kovan.", +}; + +/** + * + * @param {("Account"|"Transaction")} type + * @param {[number, string]} data + */ +export function formatEtherscanLink(type, data) { + const [chainId, address] = data; + // polygon + if (chainId === 137) { + switch (type) { + case "Account": { + return `https://polygonscan.com/address/${address}`; + } + case "Transaction": { + return `https://polygonscan.com/tx/${hash}`; + } + default: + return; + } + } else { + switch (type) { + case "Account": { + return `https://${ETHERSCAN_PREFIXES[chainId]}etherscan.io/address/${address}`; + } + case "Transaction": { + return `https://${ETHERSCAN_PREFIXES[chainId]}etherscan.io/tx/${hash}`; + } + default: + return; + } + } +} + +/** + * @name parseBalance + * + * @param {import("@ethersproject/bignumber").BigNumberish} balance + * @param {number} decimals + * @param {number} decimalsToDisplay + * + * @returns {string} + */ +export const parseBalance = (balance, decimals = 18, decimalsToDisplay = 3) => + Number(formatUnits(balance, decimals)).toFixed(decimalsToDisplay); + +export function big(num) { + return BigNumber.from(num); +} + +export function parseBN(bn) { + return bn.toNumber(); +} + +export function parseUnit(num, decimals = 18) { + return parseUnits(num, decimals); +} + +export function toString(bn) { + return bn.toString(); +} + +// 转换成 bignumber +export const toAmount = (num, decimals = 0) => { + let a = new ethers.utils.BigNumber(10).pow(decimals); + let b = BigNumber(a.toString()).multipliedBy(BigNumber(num)); + + console.log(num, b); + return new ethers.utils.BigNumber(b.toString()); +}; + +// bignumber => 小值 +export const toNum = (amount, decimals = 0) => { + let a = new ethers.utils.BigNumber(10).pow(decimals); + let b = BigNumber(amount.toString()).dividedBy(BigNumber(a)); + return b.toString(); +}; diff --git a/projects/Team-7-DeDrops/interface/package.json b/projects/Team-7-DeDrops/interface/package.json new file mode 100644 index 0000000..d002990 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/package.json @@ -0,0 +1,64 @@ +{ + "name": "notus-nextjs", + "homepage": "https://demos.creative-tim.com/notus-nextjs", + "version": "1.1.0", + "description": "Notus NextJS - A free Tailwind CSS, NextJS and React Ui Kit and Admin by Creative Tim.", + "repository": "https://github.com/creativetimofficial/notus-nextjs", + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.4.1", + "@ethersproject/contracts": "^5.4.0", + "@ethersproject/providers": "^5.4.2", + "@ethersproject/units": "^5.4.0", + "@ethersproject/wallet": "^5.4.0", + "@fortawesome/fontawesome-free": "5.15.3", + "@metamask/onboarding": "^1.0.1", + "@popperjs/core": "2.9.1", + "@tailwindcss/forms": "0.2.1", + "@web3-react/abstract-connector": "^6.0.7", + "@web3-react/core": "^6.1.9", + "@web3-react/injected-connector": "^6.0.7", + "@web3-react/network-connector": "^6.1.9", + "bignumber.js": "^9.0.1", + "chart.js": "2.9.4", + "ethers": "4", + "gulp": "4.0.2", + "gulp-append-prepend": "1.0.8", + "lodash": "^4.17.21", + "next": "10.0.9", + "react": "17.0.1", + "react-dom": "17.0.1", + "react-scripts": "4.0.3", + "swr": "^0.5.6", + "tailwindcss": "2.0.4" + }, + "scripts": { + "start": "next start", + "build": "next build", + "dev": "next dev", + "install:clean": "rm -rf node_modules/ && rm -rf package-lock.json && npm install && npm run build:tailwind && npm run dev", + "build:tailwind": "tailwind build styles/index.css -o styles/tailwind.css" + }, + "eslintConfig": { + "extends": "react-app" + }, + "browserslist": { + "production": [ + ">0.2%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "optionalDependencies": { + "typescript": "4.2.3" + }, + "devDependencies": { + "autoprefixer": "10.2.5", + "postcss": "8.2.8" + } +} diff --git a/projects/Team-7-DeDrops/interface/pages/404.js b/projects/Team-7-DeDrops/interface/pages/404.js new file mode 100644 index 0000000..27fd58c --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/404.js @@ -0,0 +1,12 @@ +import React, { Component } from "react"; +import Router from "next/router"; + +export default class Error404 extends Component { + componentDidMount = () => { + Router.push("/"); + }; + + render() { + return
    ; + } +} diff --git a/projects/Team-7-DeDrops/interface/pages/_app.js b/projects/Team-7-DeDrops/interface/pages/_app.js new file mode 100644 index 0000000..7b85b25 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/_app.js @@ -0,0 +1,49 @@ +import React from "react"; + +import App from "next/app"; +import Head from "next/head"; + +import { Web3Provider } from "@ethersproject/providers"; +import { Web3ReactProvider } from "@web3-react/core"; + +import "@fortawesome/fontawesome-free/css/all.min.css"; +import "styles/tailwind.css"; + +function getLibrary(provider) { + return new Web3Provider(provider); +} + +export default class MyApp extends App { + static async getInitialProps({ Component, router, ctx }) { + let pageProps = {}; + + if (Component.getInitialProps) { + pageProps = await Component.getInitialProps(ctx); + } + + return { pageProps }; + } + + render() { + const { Component, pageProps } = this.props; + + const Layout = Component.layout || (({ children }) => <>{children}); + + return ( + + + + DeDrops + + + + + + + + ); + } +} diff --git a/projects/Team-7-DeDrops/interface/pages/_document.js b/projects/Team-7-DeDrops/interface/pages/_document.js new file mode 100644 index 0000000..a3920cf --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/_document.js @@ -0,0 +1,28 @@ +import React from "react"; +import Document, { Html, Head, Main, NextScript } from "next/document"; + +class MyDocument extends Document { + render() { + return ( + + + + + + + + +
    +
    + + + + ); + } +} + +export default MyDocument; diff --git a/projects/Team-7-DeDrops/interface/pages/_error.js b/projects/Team-7-DeDrops/interface/pages/_error.js new file mode 100644 index 0000000..994b12d --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/_error.js @@ -0,0 +1,12 @@ +import React, { Component } from "react"; +import Router from "next/router"; + +export default class _error extends Component { + componentDidMount = () => { + Router.push("/"); + }; + + render() { + return
    ; + } +} diff --git a/projects/Team-7-DeDrops/interface/pages/airdrops/[id].js b/projects/Team-7-DeDrops/interface/pages/airdrops/[id].js new file mode 100644 index 0000000..6042f47 --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/airdrops/[id].js @@ -0,0 +1,260 @@ +/* eslint-disable react/jsx-no-target-blank */ +import React, { useEffect, useState } from "react"; +import { useRouter } from "next/router"; + +import CardNFTItem from "components/Cards/CardNFTItem"; +import MainLayout from "layouts/main"; + +import { NFTMintContract, Bank1155Contract } from "libs/contracts"; +import { useWeb3React } from "@web3-react/core"; + +import _ from "lodash"; + +import { AirdropContract } from "libs/contracts"; + +import { Airdrop as AirdropContractABI } from "constans/abi/Airdrop"; +import useContract from "hooks/useContract"; +import { DeDropsNFT as mintContractABI } from "constans/abi/DeDropsNFT"; + +import { Bank1155 as Bank1155ABI } from "constans/abi/Bank1155"; +import { parseBN } from "libs/web3Util"; + +export default function AirdropDetail() { + const { library, account } = useWeb3React(); + + const airdropDetailInitInfoState = { + name: "", + }; + + const airdropDetailInitInfo2State = {}; + + const [airdropDetail, setAirdropDetail] = useState({ + ...airdropDetailInitInfoState, + ...airdropDetailInitInfo2State, + }); + + const router = useRouter(); + + const airdropID = router.query.id; + + // airdrop contract instance + const AirdropContractInstance = useContract( + AirdropContract, + AirdropContractABI, + account + ); + + const nftDetailInitInfoState = { + name: "", + imgUrl: "", + desc: "", + nftCount: "", + }; + + const nftDetailInitInfo2State = { + actions: [], + money: "", + }; + + const [nftDetailList, setNftDetailList] = useState([]); + + // mint contract instance + const nftContract = useContract(NFTMintContract, mintContractABI, account); + + // bank 1155 contract instance + const bank1155Contract = useContract(Bank1155Contract, Bank1155ABI, account); + + async function getNftDetail(nftID) { + const nftData = await nftContract.idToItem(nftID); + + // console.log("nftData", nftID, nftData); + const nftDataInfo = nftData.info + ? JSON.parse(nftData.info) + : nftDetailInitInfoState; + const nftDataCondition = nftData.info2 + ? JSON.parse(nftData.info2) + : nftDetailInitInfo2State; + + // nft 已领取数量 + let claimedCount = await bank1155Contract.tokenUserBalance( + NFTMintContract, + nftID, + account + ); + + // console.log("claimedCount", parseBN(claimedCount)); + claimedCount = parseBN(claimedCount); + + if (nftDataInfo.imgUrl === "") { + nftDataInfo.imgUrl = + "https://miro.medium.com/max/1400/1*PfyeIplM0nkWwiGgkrYCUQ.png"; + } + + console.log(nftID, { + ...nftDataInfo, + ...nftDataCondition, + claimedCount, + }); + + if (nftData.info === "" || nftData.info2 === "") { + // 信息不全,不显示 + return; + } else { + return { + id: nftID, + ...nftDataInfo, + ...nftDataCondition, + claimedCount, + }; + } + } + + // get airdrop detail + + async function getAirdropDetail(id) { + const airdropData = await AirdropContractInstance.idToItem(id); + + // console.log("airdropData", id, airdropData); + + try { + const airdropDataInfo = airdropData.info + ? JSON.parse(airdropData.info) + : airdropDetailInitInfoState; + const airdropDataInfo2 = airdropData.info2 + ? JSON.parse(airdropData.info2) + : airdropDetailInitInfo2State; + + console.log("airdrop-", id, { + id: id, + ...airdropDataInfo, + ...airdropDataInfo2, + }); + + setAirdropDetail({ + id: id, + ...airdropDataInfo, + ...airdropDataInfo2, + }); + + return { + id: id, + ...airdropDataInfo, + ...airdropDataInfo2, + }; + } catch (e) { + console.log("error"); + } + } + + // get airdrop detail data + useEffect(() => { + if (AirdropContractInstance) { + getAirdropDetail(airdropID); + } + }, [airdropID, AirdropContractInstance]); + + // get nft list + useEffect(() => { + (async () => { + if (nftContract) { + // console.log(nftContract); + + if ( + airdropDetail && + airdropDetail.condition && + airdropDetail.condition.length > 0 + ) { + for (const i of airdropDetail.condition) { + console.log("nft ", i); + const detail = await getNftDetail(i); + if (detail) { + nftDetailList.push(detail); + // setNftDetailList([...nftDetailList, detail]); + } + } + + console.log("nftDetailList", nftDetailList); + + setNftDetailList([...nftDetailList]); + } + } + })(); + }, [airdropDetail]); + + return ( + <> +
    + {airdropDetail && airdropDetail.airdrop ? ( +
    +

    + {airdropDetail.name} +

    + +

    + 空投时间:{airdropDetail.airdrop.startTime}~ + {airdropDetail.airdrop.endTime} +

    +

    + 空投描述:{airdropDetail.desc} +

    + {/*

    + 空投 Token 名称: +

    */} +

    + 空投 Token 合约: + + {airdropDetail.airdrop.token} + +

    +

    + 已领取/空投总量:{airdropDetail.airdrop.tokenAmount} +

    +

    + 空投地址数:{airdropDetail.airdrop.tokenClaimableCount} +

    + +
    + +

    + 空投领取条件 +

    +

    + 持有以下NFT的地址才可以领取空投 +

    +
    + {nftDetailList.map((item) => ( + + ))} +
    + +
    +
    + +
    +
    +
    + ) : ( +
    +
    + +
    +

    + Loading... +

    +
    + )} +
    + + ); +} + +AirdropDetail.layout = MainLayout; diff --git a/projects/Team-7-DeDrops/interface/pages/airdrops/apply.js b/projects/Team-7-DeDrops/interface/pages/airdrops/apply.js new file mode 100644 index 0000000..763649c --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/airdrops/apply.js @@ -0,0 +1,23 @@ +/* eslint-disable react/jsx-no-target-blank */ +import React from "react"; + +import IndexNavbar from "components/Navbars/IndexNavbar.js"; + +import CardAirdropApply from "components/Cards/CardAirdropApply"; + +import Footer from "components/Footers/Footer.js"; + +export default function Index() { + return ( + <> + + +
    +
    + +
    +
    +
    + + ); +} diff --git a/projects/Team-7-DeDrops/interface/pages/index.js b/projects/Team-7-DeDrops/interface/pages/index.js new file mode 100644 index 0000000..4b4ff0c --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/index.js @@ -0,0 +1,211 @@ +/* eslint-disable react/jsx-no-target-blank */ +import React, { useEffect, useState } from "react"; +import Link from "next/link"; + +import MainLayout from "layouts/main"; +import AirdropsTabs from "components/Tabs/AirdropsTabs"; +import AirdropsCardTable from "components/Cards/CardAirdropsTable"; + +import { tabList } from "libs/airdropConfig"; + +import { useWeb3React } from "@web3-react/core"; + +import _ from "lodash"; + +import useContract from "hooks/useContract"; +import { AirdropContract } from "libs/contracts"; + +import { Airdrop as AirdropContractABI } from "constans/abi/Airdrop"; + +import { parseBN } from "libs/web3Util"; + +const renderTabsContent = (tabKey, setOpenTab, airdropList) => { + const moreBtn = (tabKey) => { + return ( + { + e.preventDefault(); + setOpenTab(tabKey); + }} + data-toggle="tab" + href={`#${tabKey}`} + role="tablist" + className="font-bold text-blueGray-700 hover:text-blueGray-500 ease-linear transition-all duration-150" + > + 更多 + + ); + }; + + return tabList.map((item) => { + // if (item.key === "overview") { + // return ( + //
    + //
    + //
    + // + // {moreBtn("ongoing")} + //
    + //
    + // + // {moreBtn("upcoming")} + //
    + //
    + //
    + // ); + // } else { + return ( +
    +
    +
    + {airdropList.length > 0 ? ( + + ) : ( +
    +
    + +
    +

    + Loading... +

    +
    + )} +
    +
    +
    + ); + // } + }); +}; + +export default function Index() { + const { library, account } = useWeb3React(); + + const [openTab, setOpenTab] = useState("ongoing"); + + const [airdropList, setAirdropList] = useState([]); + + // airdrop contract instance + const AirdropContractInstance = useContract( + AirdropContract, + AirdropContractABI, + account + ); + + const airdropDetailInitInfoState = {}; + + const airdropDetailInitInfo2State = {}; + + async function getAirdropDetail(id) { + const airdropData = await AirdropContractInstance.idToItem(id); + + console.log("airdropData", id, airdropData); + + try { + const airdropDataInfo = airdropData.info + ? JSON.parse(airdropData.info) + : airdropDetailInitInfoState; + const airdropDataInfo2 = airdropData.info2 + ? JSON.parse(airdropData.info2) + : airdropDetailInitInfo2State; + + console.log(id, { + id: id, + ...airdropDataInfo, + ...airdropDataInfo2, + }); + + return { + id: id, + ...airdropDataInfo, + ...airdropDataInfo2, + }; + } catch (e) { + console.log("error"); + } + } + + useEffect(() => { + (async () => { + if (AirdropContractInstance) { + // console.log(nftContract); + let AirdropCount = await AirdropContractInstance.length(); + AirdropCount = parseBN(AirdropCount); + console.log("AirdropCount", AirdropCount); + + if (AirdropCount > 0) { + for (const i of _.range(1, AirdropCount + 1)) { + console.log("airdrop ", i); + const detail = await getAirdropDetail(i); + if (detail) { + airdropList.push(detail); + } + } + + console.log("airdropList", airdropList); + + setAirdropList([...airdropList]); + } + } + })(); + }, [AirdropContractInstance, account]); + + return ( + <> +
    +
    +
    + + +
    +
    +
    + {renderTabsContent(openTab, setOpenTab, airdropList)} +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    + + 😍 + +

    +

    来尝试下发起空投?

    +

    + 任何人都可以用 DeDrops 一键发起空投! +

    +
    + + + DeDrops It! + + +
    +
    +
    +
    +
    +
    + + ); +} + +Index.layout = MainLayout; diff --git a/projects/Team-7-DeDrops/interface/pages/landing.js b/projects/Team-7-DeDrops/interface/pages/landing.js new file mode 100644 index 0000000..a0f5d2e --- /dev/null +++ b/projects/Team-7-DeDrops/interface/pages/landing.js @@ -0,0 +1,568 @@ +import React from "react"; +import Link from "next/link"; + +// components + +import Navbar from "components/Navbars/AuthNavbar.js"; +import Footer from "components/Footers/Footer.js"; + +export default function Landing() { + return ( + <> + +
    +
    +
    + +
    +
    +
    +
    +
    +

    + Your story starts with us. +

    +

    + This is a simple example of a Landing Page you can build + using Notus NextJS. It features multiple CSS components + based on the Tailwind CSS design system. +

    +
    +
    +
    +
    +
    + + + +
    +
    + +
    +
    +
    +
    +
    +
    +
    + +
    +
    Awarded Agency
    +

    + Divide details about your product or agency work into + parts. A paragraph describing a feature will be enough. +

    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    Free Revisions
    +

    + Keep you user engaged by providing meaningful information. + Remember that by this time, the user is curious. +

    +
    +
    +
    + +
    +
    +
    +
    + +
    +
    Verified Company
    +

    + Write a few lines about each one. A paragraph describing a + feature will be enough. Keep you user engaged! +

    +
    +
    +
    +
    + +
    +
    +
    + +
    +

    + Working with us is a pleasure +

    +

    + Don't let your uses guess by attaching tooltips and popoves to + any element. Just make sure you enable them first via + JavaScript. +

    +

    + The kit comes with three pre-built pages to help you get + started faster. You can change the text and images and you're + good to go. Just make sure you enable them first via + JavaScript. +

    + + + Check Notus NextJS! + + +
    + +
    +
    + ... +
    + + + +

    + Top Notch Services +

    +

    + The Arctic Ocean freezes every winter and much of the + sea-ice then thaws every summer, and that process will + continue whatever happens. +

    +
    +
    +
    +
    +
    +
    + +
    +
    + + + +
    + +
    +
    +
    + ... +
    +
    +
    +
    + +
    +

    A growing company

    +

    + The extension comes with three pre-built pages to help you + get started faster. You can change the text and images and + you're good to go. +

    +
      +
    • +
      +
      + + + +
      +
      +

      + Carefully crafted components +

      +
      +
      +
    • +
    • +
      +
      + + + +
      +
      +

      + Amazing page examples +

      +
      +
      +
    • +
    • +
      +
      + + + +
      +
      +

      + Dynamic components +

      +
      +
      +
    • +
    +
    +
    +
    +
    +
    + +
    +
    +
    +
    +

    Here are our heroes

    +

    + According to the National Oceanic and Atmospheric + Administration, Ted, Scambos, NSIDClead scentist, puts the + potentially record maximum. +

    +
    +
    +
    +
    +
    + ... +
    +
    Ryan Tompson
    +

    + Web Developer +

    +
    + + + +
    +
    +
    +
    +
    +
    + ... +
    +
    Romina Hadid
    +

    + Marketing Specialist +

    +
    + + +
    +
    +
    +
    +
    +
    + ... +
    +
    Alexa Smith
    +

    + UI/UX Designer +

    +
    + + + +
    +
    +
    +
    +
    +
    + ... +
    +
    Jenna Kardi
    +

    + Founder and CEO +

    +
    + + + + +
    +
    +
    +
    +
    +
    +
    + +
    +
    + + + +
    + +
    +
    +
    +

    + Build something +

    +

    + Put the potentially record low maximum sea ice extent tihs + year down to low ice. According to the National Oceanic and + Atmospheric Administration, Ted, Scambos. +

    +
    +
    +
    +
    +
    + +
    +
    + Excelent Services +
    +

    + Some quick example text to build on the card title and make up + the bulk of the card's content. +

    +
    +
    +
    + +
    +
    + Grow your market +
    +

    + Some quick example text to build on the card title and make up + the bulk of the card's content. +

    +
    +
    +
    + +
    +
    + Launch time +
    +

    + Some quick example text to build on the card title and make up + the bulk of the card's content. +

    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +

    + Want to work with us? +

    +

    + Complete this form and we will get back to you in 24 + hours. +

    +
    + + +
    + +
    + + +
    + +
    + +

    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