From 042667f10d841d58f1efa0df5f61d85dc0712ff3 Mon Sep 17 00:00:00 2001 From: PedroCailleret Date: Mon, 9 Jan 2023 18:05:14 -0300 Subject: [PATCH] Added testnet deployments --- .env.example | 5 ++- README.md | 34 +++++++++++++++++++ .../DataTypes.sol/DataTypes.dbg.json | 2 +- .../EventAndErrors.dbg.json | 2 +- .../Reputation.sol/Reputation.dbg.json | 2 +- .../contracts/Reputation.sol/Reputation.json | 4 +-- .../lib/auth/Owned.sol/Owned.dbg.json | 2 +- .../IReputation.sol/IReputation.dbg.json | 2 +- .../lib/mock/mockToken.sol/MockToken.dbg.json | 2 +- .../lib/mock/mockToken.sol/MockToken.json | 4 +-- .../lib/tokens/ERC20.sol/ERC20.dbg.json | 2 +- .../lib/utils/Counters.sol/Counters.dbg.json | 2 +- .../MerkleProofLib.dbg.json | 2 +- .../ReentrancyGuard.dbg.json | 2 +- .../SafeTransferLib.dbg.json | 2 +- artifacts/contracts/p2pix.sol/P2PIX.dbg.json | 2 +- artifacts/contracts/p2pix.sol/P2PIX.json | 4 +-- deploys/goerli.json | 8 +++++ deploys/polygon-mumbai.json | 8 +++++ hardhat.config.ts | 25 +++++++++++--- package.json | 4 +++ scripts/1-deploy-mockToken.ts | 15 ++++---- scripts/2-deploy-p2pix.ts | 20 ++++++++--- src/types/factories/Reputation__factory.ts | 2 +- .../mock/mockToken.sol/MockToken__factory.ts | 2 +- .../factories/p2pix.sol/P2PIX__factory.ts | 2 +- 26 files changed, 122 insertions(+), 39 deletions(-) create mode 100644 deploys/goerli.json create mode 100644 deploys/polygon-mumbai.json diff --git a/.env.example b/.env.example index 0b02a76..d776dbd 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,11 @@ -INFURA_API_KEY="{INSERT_API_KEY}" MNEMONIC="{INSERT_12_WORD_MNEMONIC}" +INFURA_API_KEY="{INSERT_API_KEY}" +ALCHEMY_API_KEY="{INSERT_API_KEY}" + # Block explorer API keys ETHERSCAN_API_KEY="{INSERT_API_KEY}" +POLYGONSCAN_API_KEY="{INSERT_API_KEY}" GASPRICE_API_ENDPOINT="https://api.etherscan.io/api?module=proxy&action=eth_gasPrice" COINMARKETCAP_API_KEY="{INSERT_API_KEY}" diff --git a/README.md b/README.md index 79d3271..13ba6cb 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,23 @@ ![Callgraph](docs/callgraph.svg) +## Current Deployment addresses + +| Testnet | Token Address | P2pix Address | +|--------- |-------------------------------------------- |-------------------------------------------- | +| Goerli | 0x294003F602c321627152c6b7DED3EAb5bEa853Ee | 0x5f3EFA9A90532914545CEf527C530658af87e196 | +| Mumbai | 0x294003F602c321627152c6b7DED3EAb5bEa853Ee | 0x5f3EFA9A90532914545CEf527C530658af87e196 | + + + + + + + + + + + ## Usage ### Pre Requisites @@ -103,3 +120,20 @@ yarn deploy2:localhost **_NOTE_:** The second script transfers 2M tokens to the first wallet of the node. To use the P2Pix smart contract first transfer some of the tokens to other wallets. + + +## Deploying to testnets + +Deploy to Ethereum's Goerli testnet: + +```sh +yarn deploy1:goerli +yarn deploy2:goerli +``` + +Deploy to Polygon's Mumbai testnet: + +```sh +yarn deploy1:mumbai +yarn deploy2:mumbai +``` diff --git a/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json b/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json index 1c86e88..fb158ce 100644 --- a/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json +++ b/artifacts/contracts/DataTypes.sol/DataTypes.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json index 1c86e88..fb158ce 100644 --- a/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json +++ b/artifacts/contracts/EventAndErrors.sol/EventAndErrors.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/Reputation.sol/Reputation.dbg.json b/artifacts/contracts/Reputation.sol/Reputation.dbg.json index 1c86e88..fb158ce 100644 --- a/artifacts/contracts/Reputation.sol/Reputation.dbg.json +++ b/artifacts/contracts/Reputation.sol/Reputation.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/Reputation.sol/Reputation.json b/artifacts/contracts/Reputation.sol/Reputation.json index 0aa879f..1d452b0 100644 --- a/artifacts/contracts/Reputation.sol/Reputation.json +++ b/artifacts/contracts/Reputation.sol/Reputation.json @@ -99,8 +99,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061036b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a", + "bytecode": "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350610416806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json b/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json +++ b/artifacts/contracts/lib/auth/Owned.sol/Owned.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/interfaces/IReputation.sol/IReputation.dbg.json b/artifacts/contracts/lib/interfaces/IReputation.sol/IReputation.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/interfaces/IReputation.sol/IReputation.dbg.json +++ b/artifacts/contracts/lib/interfaces/IReputation.sol/IReputation.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json +++ b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json index c3da5c1..02d3603 100644 --- a/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json +++ b/artifacts/contracts/lib/mock/mockToken.sol/MockToken.json @@ -330,8 +330,8 @@ "type": "function" } ], - "bytecode": "0x60e06040523480156200001157600080fd5b506040516200105238038062001052833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610c87620003cb60003960006104630152600061042e015260006101540152610c876000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108ad565b60405180910390f35b61011561011036600461091e565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610948565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e366004610984565b60036020526000908152604090205481565b61012e6101be366004610984565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461091e565b610492565b6101fe6101f93660046109a6565b61050a565b005b61012e61020e366004610a19565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610a62565b610762565b6000805461024b90610b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b2d565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610b7e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610b7e565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107a8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b2d565b336000908152600360205260408120805483919083906104b3908490610b7e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b4284101561055f5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161056b61042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610677573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106ad5750876001600160a01b0316816001600160a01b0316145b6106f95760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610556565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107a25761079284828151811061078457610784610b95565b602002602001015184610842565b61079b81610bab565b9050610767565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107da9190610bc6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108549190610c62565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156108da578581018301518582016040015282016108be565b818111156108ec576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461091957600080fd5b919050565b6000806040838503121561093157600080fd5b61093a83610902565b946020939093013593505050565b60008060006060848603121561095d57600080fd5b61096684610902565b925061097460208501610902565b9150604084013590509250925092565b60006020828403121561099657600080fd5b61099f82610902565b9392505050565b600080600080600080600060e0888a0312156109c157600080fd5b6109ca88610902565b96506109d860208901610902565b95506040880135945060608801359350608088013560ff811681146109fc57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a2c57600080fd5b610a3583610902565b9150610a4360208401610902565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610a7557600080fd5b823567ffffffffffffffff80821115610a8d57600080fd5b818501915085601f830112610aa157600080fd5b8135602082821115610ab557610ab5610a4c565b8160051b604051601f19603f83011681018181108682111715610ada57610ada610a4c565b604052928352818301935084810182019289841115610af857600080fd5b948201945b83861015610b1d57610b0e86610902565b85529482019493820193610afd565b9997909101359750505050505050565b600181811c90821680610b4157607f821691505b60208210811415610b6257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b9057610b90610b68565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bbf57610bbf610b68565b5060010190565b600080835481600182811c915080831680610be257607f831692505b6020808410821415610c0257634e487b7160e01b86526022600452602486fd5b818015610c165760018114610c2757610c54565b60ff19861689528489019650610c54565b60008a81526020902060005b86811015610c4c5781548b820152908501908301610c33565b505084890196505b509498975050505050505050565b60008219821115610c7557610c75610b68565b50019056fea164736f6c6343000809000a", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108ad565b60405180910390f35b61011561011036600461091e565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610948565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e366004610984565b60036020526000908152604090205481565b61012e6101be366004610984565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461091e565b610492565b6101fe6101f93660046109a6565b61050a565b005b61012e61020e366004610a19565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610a62565b610762565b6000805461024b90610b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b2d565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610b7e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610b7e565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107a8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b2d565b336000908152600360205260408120805483919083906104b3908490610b7e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b4284101561055f5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161056b61042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610677573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106ad5750876001600160a01b0316816001600160a01b0316145b6106f95760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610556565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107a25761079284828151811061078457610784610b95565b602002602001015184610842565b61079b81610bab565b9050610767565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107da9190610bc6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108549190610c62565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156108da578581018301518582016040015282016108be565b818111156108ec576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461091957600080fd5b919050565b6000806040838503121561093157600080fd5b61093a83610902565b946020939093013593505050565b60008060006060848603121561095d57600080fd5b61096684610902565b925061097460208501610902565b9150604084013590509250925092565b60006020828403121561099657600080fd5b61099f82610902565b9392505050565b600080600080600080600060e0888a0312156109c157600080fd5b6109ca88610902565b96506109d860208901610902565b95506040880135945060608801359350608088013560ff811681146109fc57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a2c57600080fd5b610a3583610902565b9150610a4360208401610902565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610a7557600080fd5b823567ffffffffffffffff80821115610a8d57600080fd5b818501915085601f830112610aa157600080fd5b8135602082821115610ab557610ab5610a4c565b8160051b604051601f19603f83011681018181108682111715610ada57610ada610a4c565b604052928352818301935084810182019289841115610af857600080fd5b948201945b83861015610b1d57610b0e86610902565b85529482019493820193610afd565b9997909101359750505050505050565b600181811c90821680610b4157607f821691505b60208210811415610b6257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b9057610b90610b68565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bbf57610bbf610b68565b5060010190565b600080835481600182811c915080831680610be257607f831692505b6020808410821415610c0257634e487b7160e01b86526022600452602486fd5b818015610c165760018114610c2757610c54565b60ff19861689528489019650610c54565b60008a81526020902060005b86811015610c4c5781548b820152908501908301610c33565b505084890196505b509498975050505050505050565b60008219821115610c7557610c75610b68565b50019056fea164736f6c6343000809000a", + "bytecode": "0x60e06040523480156200001157600080fd5b50604051620010bf380380620010bf833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610cf4620003cb60003960006104630152600061042e015260006101540152610cf46000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108fc565b60405180910390f35b61011561011036600461096d565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610997565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e3660046109d3565b60036020526000908152604090205481565b61012e6101be3660046109d3565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461096d565b610492565b6101fe6101f93660046109f5565b61050a565b005b61012e61020e366004610a68565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610ab1565b6107b1565b6000805461024b90610b7c565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b7c565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610bcd565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610bcd565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107f7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b7c565b336000908152600360205260408120805483919083906104b3908490610bcd565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b42841015610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161058561042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156106ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106e25750876001600160a01b0316816001600160a01b0316145b610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610570565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107f1576107e18482815181106107d3576107d3610be4565b602002602001015184610891565b6107ea81610bfa565b90506107b6565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108299190610c15565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108a39190610ccf565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156109295785810183015185820160400152820161090d565b8181111561093b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461096857600080fd5b919050565b6000806040838503121561098057600080fd5b61098983610951565b946020939093013593505050565b6000806000606084860312156109ac57600080fd5b6109b584610951565b92506109c360208501610951565b9150604084013590509250925092565b6000602082840312156109e557600080fd5b6109ee82610951565b9392505050565b600080600080600080600060e0888a031215610a1057600080fd5b610a1988610951565b9650610a2760208901610951565b95506040880135945060608801359350608088013560ff81168114610a4b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7b57600080fd5b610a8483610951565b9150610a9260208401610951565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ac457600080fd5b823567ffffffffffffffff80821115610adc57600080fd5b818501915085601f830112610af057600080fd5b8135602082821115610b0457610b04610a9b565b8160051b604051601f19603f83011681018181108682111715610b2957610b29610a9b565b604052928352818301935084810182019289841115610b4757600080fd5b948201945b83861015610b6c57610b5d86610951565b85529482019493820193610b4c565b9997909101359750505050505050565b600181811c90821680610b9057607f821691505b60208210811415610bb157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bdf57610bdf610bb7565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610c0e57610c0e610bb7565b5060010190565b600080835481600182811c915080831680610c3157607f831692505b6020808410821415610c5157634e487b7160e01b86526022600452602486fd5b818015610c655760018114610c9457610cc1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650610cc1565b60008a81526020902060005b86811015610cb95781548b820152908501908301610ca0565b505084890196505b509498975050505050505050565b60008219821115610ce257610ce2610bb7565b50019056fea164736f6c6343000809000a", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108fc565b60405180910390f35b61011561011036600461096d565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610997565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e3660046109d3565b60036020526000908152604090205481565b61012e6101be3660046109d3565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461096d565b610492565b6101fe6101f93660046109f5565b61050a565b005b61012e61020e366004610a68565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610ab1565b6107b1565b6000805461024b90610b7c565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b7c565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610bcd565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610bcd565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107f7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b7c565b336000908152600360205260408120805483919083906104b3908490610bcd565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b42841015610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161058561042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156106ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106e25750876001600160a01b0316816001600160a01b0316145b610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610570565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107f1576107e18482815181106107d3576107d3610be4565b602002602001015184610891565b6107ea81610bfa565b90506107b6565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108299190610c15565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108a39190610ccf565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156109295785810183015185820160400152820161090d565b8181111561093b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461096857600080fd5b919050565b6000806040838503121561098057600080fd5b61098983610951565b946020939093013593505050565b6000806000606084860312156109ac57600080fd5b6109b584610951565b92506109c360208501610951565b9150604084013590509250925092565b6000602082840312156109e557600080fd5b6109ee82610951565b9392505050565b600080600080600080600060e0888a031215610a1057600080fd5b610a1988610951565b9650610a2760208901610951565b95506040880135945060608801359350608088013560ff81168114610a4b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7b57600080fd5b610a8483610951565b9150610a9260208401610951565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ac457600080fd5b823567ffffffffffffffff80821115610adc57600080fd5b818501915085601f830112610af057600080fd5b8135602082821115610b0457610b04610a9b565b8160051b604051601f19603f83011681018181108682111715610b2957610b29610a9b565b604052928352818301935084810182019289841115610b4757600080fd5b948201945b83861015610b6c57610b5d86610951565b85529482019493820193610b4c565b9997909101359750505050505050565b600181811c90821680610b9057607f821691505b60208210811415610bb157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bdf57610bdf610bb7565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610c0e57610c0e610bb7565b5060010190565b600080835481600182811c915080831680610c3157607f831692505b6020808410821415610c5157634e487b7160e01b86526022600452602486fd5b818015610c655760018114610c9457610cc1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650610cc1565b60008a81526020902060005b86811015610cb95781548b820152908501908301610ca0565b505084890196505b509498975050505050505050565b60008219821115610ce257610ce2610bb7565b50019056fea164736f6c6343000809000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json +++ b/artifacts/contracts/lib/tokens/ERC20.sol/ERC20.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json b/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json +++ b/artifacts/contracts/lib/utils/Counters.sol/Counters.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/utils/MerkleProofLib.sol/MerkleProofLib.dbg.json b/artifacts/contracts/lib/utils/MerkleProofLib.sol/MerkleProofLib.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/utils/MerkleProofLib.sol/MerkleProofLib.dbg.json +++ b/artifacts/contracts/lib/utils/MerkleProofLib.sol/MerkleProofLib.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json +++ b/artifacts/contracts/lib/utils/ReentrancyGuard.sol/ReentrancyGuard.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json index f80709a..62d29f3 100644 --- a/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json +++ b/artifacts/contracts/lib/utils/SafeTransferLib.sol/SafeTransferLib.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/p2pix.sol/P2PIX.dbg.json b/artifacts/contracts/p2pix.sol/P2PIX.dbg.json index 1c86e88..fb158ce 100644 --- a/artifacts/contracts/p2pix.sol/P2PIX.dbg.json +++ b/artifacts/contracts/p2pix.sol/P2PIX.dbg.json @@ -1,4 +1,4 @@ { "_format": "hh-sol-dbg-1", - "buildInfo": "../../build-info/35b01c3398ab10e738bc36ca68343c23.json" + "buildInfo": "../../build-info/7e875699b08052f41af96a3837e5d6fb.json" } diff --git a/artifacts/contracts/p2pix.sol/P2PIX.json b/artifacts/contracts/p2pix.sol/P2PIX.json index 2edec46..c4fd9f8 100644 --- a/artifacts/contracts/p2pix.sol/P2PIX.json +++ b/artifacts/contracts/p2pix.sol/P2PIX.json @@ -916,8 +916,8 @@ "type": "receive" } ], - "bytecode": "0x608060405260018055604051620028c0380380620028c08339810160408190526200002a916200049d565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506200007685620000a3565b620000818362000133565b6200008c84620001bd565b620000988282620002a1565b505050505062000620565b6000546001600160a01b03163314620000f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516200012891815260200190565b60405180910390a150565b6000546001600160a01b031633146200017e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9060200162000128565b6000546001600160a01b03163314620002085760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b80516000905b808210156200026e57600062000246848481518110620002325762000232620005bb565b60200260200101516200038760201b60201c565b6000908152600660205260409020805460ff191660019081179091559290920191506200020e565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051620001289190620005d1565b6000546001600160a01b03163314620002ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b815180620003025763df9578836000526004601cfd5b81518114620003195763ff633a386000526004601cfd5b60208301602083016020830282015b8083146200037f578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a360208301925060208201915062000328565b505050505050565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003d857620003d862000397565b604052919050565b60006001600160401b03821115620003fc57620003fc62000397565b5060051b60200190565b6001600160a01b03811681146200041c57600080fd5b50565b600082601f8301126200043157600080fd5b815160206200044a6200044483620003e0565b620003ad565b82815260059290921b840181019181810190868411156200046a57600080fd5b8286015b8481101562000492578051620004848162000406565b83529183019183016200046e565b509695505050505050565b600080600080600060a08688031215620004b657600080fd5b8551602080880151919650906001600160401b0380821115620004d857600080fd5b620004e68a838b016200041f565b965060408901519150620004fa8262000406565b6060890151919550808211156200051057600080fd5b6200051e8a838b016200041f565b945060808901519150808211156200053557600080fd5b508701601f810189136200054857600080fd5b8051620005596200044482620003e0565b81815260059190911b8201830190838101908b8311156200057957600080fd5b928401925b82841015620005a95783518015158114620005995760008081fd5b825292840192908401906200057e565b80955050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015620006145783516001600160a01b031683529284019291840191600101620005ed565b50909695505050505050565b61229080620006306000396000f3fe6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611b4b565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611c58565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611c95565b6106ec565b34801561023f57600080fd5b5061029861024e366004611b4b565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611cb2565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611d8f565b610978565b34801561033f57600080fd5b5061036361034e366004611b4b565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611c95565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611b4b565b610a38565b3480156103ca57600080fd5b50610211610ab6565b3480156103df57600080fd5b506103636103ee366004611c95565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611b4b565b610b40565b34801561044b57600080fd5b5061021161045a366004611ddb565b610bc8565b34801561046b57600080fd5b506101de61047a366004611b4b565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611e3f565b610fbd565b3480156104b857600080fd5b506101de6104c7366004611e6b565b611050565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f366004611f1f565b611230565b34801561053057600080fd5b5061054461053f366004611b4b565b611398565b6040516101e8959493929190611f61565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611b4b565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d6366004611fee565b611462565b3480156105e757600080fd5b506102116105f6366004611c95565b61153a565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e6120b8565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e191906120ce565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107c857604051630abc194760e11b815260040160405180910390fd5b6107d06115c1565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a166040820152600160609091015290506108456115d1565b8315610855576108553385610fbd565b6000838152600760209081526040909120825181558183015180518493610883926001850192910190611ab2565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff00000000000000000000000000000000000000000090951691909216179290921790915561090d9080546001019055565b6109198233308a6115fc565b61092260018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109806115d1565b61098983611693565b6109938282611230565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109c3576109c384610b40565b600381015481546000835560028301546001600160a01b03928316926109ec91849116836116d0565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a3360018055565b505050565b6000546001600160a01b03163314610a815760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610aff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b0a338261175c565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b4981611693565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610bd06115d1565b60008681526008602052604090206002810154610c00576040516331da482760e11b815260040160405180910390fd5b4381600301541015610c25576040516307b7d7dd60e51b815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610c5592600186019290918b9101612156565b604051602081830303815290604052805190602001209050600081604051602001610cac91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610cfa57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610d6e9060019060a0016020604051602081039080840390855afa158015610d52573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610da057604051632057875960e21b815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610dc89083612213565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610e79576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610e3990849061222a565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610e6e90849061222a565b90915550610ebb9050565b818860010154610e89919061222a565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb590849061222a565b90915550505b6004880154610ed59084906001600160a01b0316836116d0565b600188015415610f415760058801546001600160a01b038e8116911614610f325760058801546001808a0154610f1a9286926001600160a01b0390911691901c6116d0565b610f2d838e60018b60010154901c6116d0565b610f41565b610f41838e8a600101546116d0565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051610f9c929190918252602082015260400190565b60405180910390a25050505050505050610fb560018055565b505050505050565b6001600160a01b03821633141561103757611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040516342e8fb9360e11b815260040160405180910390fd5b600061105a6115d1565b6110648383611230565b60008a81526007602052604090206003810154600160a01b900460ff1661109e57604051635972996f60e11b815260040160405180910390fd5b80548711156110c0576040516308aeed0f60e21b815260040160405180910390fd5b6110cb8b888c6117b7565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436110fa919061222a565b81526001600160a01b03808e1660208301528c1660408201523360609091015290508515611163576002820154600c1b611000600160ac1b03166000908152600a602052604090205461115190889088903361183b565b61115c83828461186d565b505061121a565b68056bc75e2d631000008160400151116111825761115c83828461186d565b611000600160ac1b0333600c1b16600090815260056020526040812054906111ba6111b5670de0b6b3a764000084612242565b61196b565b90506111ce670de0b6b3a764000082612264565b836040015111806111ec575069d3c21bcecceda10000008360400151115b1561120a57604051630e0c7c2360e11b815260040160405180910390fd5b61121585848661186d565b505050505b61122360018055565b9998505050505050505050565b6000815b8082101561137c57600060086000868686818110611254576112546120b8565b905060200201358152602001908152602001600020905061127481611a27565b600281015481546000908152600760205260408120805490919061129990849061222a565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116112fd57600082815260056020526040902068056bc75e2d63100000905561130f565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff888888818110611350576113506120b8565b9050602002013560405161136691815260200190565b60405180910390a2846001019450505050611234565b808210156113925763dfb035c96000526004601cfd5b50505050565b600760205260009081526040902080546001820180549192916113ba9061211b565b80601f01602080910402602001604051908101604052809291908181526020018280546113e69061211b565b80156114335780601f1061140857610100808354040283529160200191611433565b820191906000526020600020905b81548152906001019060200180831161141657829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b031633146114ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806114c05763df9578836000526004601cfd5b815181146114d65763ff633a386000526004601cfd5b60208301602083016020830282015b808314610fb5578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506114e5565b6000546001600160a01b031633146115835760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006115cc60035490565b905090565b600154600214156115f55760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061168c5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146116cd576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806113925760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a335760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff191690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106118345760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6118508484846001600160a01b038516611a6e565b61139257604051631dc23a5f60e11b815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611913908490612213565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b8360405160240161198991815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611a1e5763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611a4c5760405163d0404f8560e01b815260040160405180910390fd5b60028101546116cd576040516331da482760e11b815260040160405180910390fd5b60008315611aaa578360051b8501855b803580851160051b94855260209485185260406000209301818110611aa257611aa7565b611a7e565b50505b501492915050565b828054611abe9061211b565b90600052602060002090601f016020900481019282611ae05760008555611b26565b82601f10611af957805160ff1916838001178555611b26565b82800160010185558215611b26579182015b82811115611b26578251825591602001919060010190611b0b565b50611b32929150611b36565b5090565b5b80821115611b325760008155600101611b37565b600060208284031215611b5d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ba357611ba3611b64565b604052919050565b600067ffffffffffffffff821115611bc557611bc5611b64565b5060051b60200190565b6001600160a01b03811681146116cd57600080fd5b600082601f830112611bf557600080fd5b81356020611c0a611c0583611bab565b611b7a565b82815260059290921b84018101918181019086841115611c2957600080fd5b8286015b84811015611c4d578035611c4081611bcf565b8352918301918301611c2d565b509695505050505050565b600060208284031215611c6a57600080fd5b813567ffffffffffffffff811115611c8157600080fd5b611c8d84828501611be4565b949350505050565b600060208284031215611ca757600080fd5b813561183481611bcf565b600080600080600060808688031215611cca57600080fd5b8535611cd581611bcf565b945060208601359350604086013567ffffffffffffffff80821115611cf957600080fd5b818801915088601f830112611d0d57600080fd5b813581811115611d1c57600080fd5b896020828501011115611d2e57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611d5557600080fd5b50813567ffffffffffffffff811115611d6d57600080fd5b6020830191508360208260051b8501011115611d8857600080fd5b9250929050565b600080600060408486031215611da457600080fd5b83359250602084013567ffffffffffffffff811115611dc257600080fd5b611dce86828701611d43565b9497909650939450505050565b60008060008060008060c08789031215611df457600080fd5b863595506020870135611e0681611bcf565b945060408701359350606087013592506080870135915060a087013560ff81168114611e3157600080fd5b809150509295509295509295565b60008060408385031215611e5257600080fd5b8235611e5d81611bcf565b946020939093013593505050565b600080600080600080600080600060e08a8c031215611e8957600080fd5b8935985060208a0135611e9b81611bcf565b975060408a0135611eab81611bcf565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115611ed657600080fd5b611ee28d838e01611d43565b909650945060c08c0135915080821115611efb57600080fd5b50611f088c828d01611d43565b915080935050809150509295985092959850929598565b60008060208385031215611f3257600080fd5b823567ffffffffffffffff811115611f4957600080fd5b611f5585828601611d43565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b81811015611f955788810183015185820160c001528201611f79565b81811115611fa757600060c083870101525b50601f01601f1916830160c0019150611fcd905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b6000806040838503121561200157600080fd5b823567ffffffffffffffff8082111561201957600080fd5b61202586838701611be4565b935060209150818501358181111561203c57600080fd5b85019050601f8101861361204f57600080fd5b803561205d611c0582611bab565b81815260059190911b8201830190838101908883111561207c57600080fd5b928401925b828410156120a9578335801515811461209a5760008081fd5b82529284019290840190612081565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561210f5783516001600160a01b0316835292840192918401916001016120ea565b50909695505050505050565b600181811c9082168061212f57607f821691505b6020821081141561215057634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061217257607f831692505b602080841082141561219257634e487b7160e01b86526022600452602486fd5b8180156121a657600181146121b7576121e4565b60ff198616895284890196506121e4565b60008c81526020902060005b868110156121dc5781548b8201529085019083016121c3565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612225576122256121fd565b500390565b6000821982111561223d5761223d6121fd565b500190565b60008261225f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561227e5761227e6121fd565b50029056fea164736f6c6343000809000a", - "deployedBytecode": "0x6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611b4b565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611c58565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611c95565b6106ec565b34801561023f57600080fd5b5061029861024e366004611b4b565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611cb2565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611d8f565b610978565b34801561033f57600080fd5b5061036361034e366004611b4b565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611c95565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611b4b565b610a38565b3480156103ca57600080fd5b50610211610ab6565b3480156103df57600080fd5b506103636103ee366004611c95565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611b4b565b610b40565b34801561044b57600080fd5b5061021161045a366004611ddb565b610bc8565b34801561046b57600080fd5b506101de61047a366004611b4b565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611e3f565b610fbd565b3480156104b857600080fd5b506101de6104c7366004611e6b565b611050565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f366004611f1f565b611230565b34801561053057600080fd5b5061054461053f366004611b4b565b611398565b6040516101e8959493929190611f61565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611b4b565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d6366004611fee565b611462565b3480156105e757600080fd5b506102116105f6366004611c95565b61153a565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e6120b8565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e191906120ce565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107c857604051630abc194760e11b815260040160405180910390fd5b6107d06115c1565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a166040820152600160609091015290506108456115d1565b8315610855576108553385610fbd565b6000838152600760209081526040909120825181558183015180518493610883926001850192910190611ab2565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff00000000000000000000000000000000000000000090951691909216179290921790915561090d9080546001019055565b6109198233308a6115fc565b61092260018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109806115d1565b61098983611693565b6109938282611230565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109c3576109c384610b40565b600381015481546000835560028301546001600160a01b03928316926109ec91849116836116d0565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a3360018055565b505050565b6000546001600160a01b03163314610a815760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610aff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b0a338261175c565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b4981611693565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610bd06115d1565b60008681526008602052604090206002810154610c00576040516331da482760e11b815260040160405180910390fd5b4381600301541015610c25576040516307b7d7dd60e51b815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610c5592600186019290918b9101612156565b604051602081830303815290604052805190602001209050600081604051602001610cac91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610cfa57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610d6e9060019060a0016020604051602081039080840390855afa158015610d52573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610da057604051632057875960e21b815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610dc89083612213565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610e79576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610e3990849061222a565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610e6e90849061222a565b90915550610ebb9050565b818860010154610e89919061222a565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb590849061222a565b90915550505b6004880154610ed59084906001600160a01b0316836116d0565b600188015415610f415760058801546001600160a01b038e8116911614610f325760058801546001808a0154610f1a9286926001600160a01b0390911691901c6116d0565b610f2d838e60018b60010154901c6116d0565b610f41565b610f41838e8a600101546116d0565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051610f9c929190918252602082015260400190565b60405180910390a25050505050505050610fb560018055565b505050505050565b6001600160a01b03821633141561103757611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040516342e8fb9360e11b815260040160405180910390fd5b600061105a6115d1565b6110648383611230565b60008a81526007602052604090206003810154600160a01b900460ff1661109e57604051635972996f60e11b815260040160405180910390fd5b80548711156110c0576040516308aeed0f60e21b815260040160405180910390fd5b6110cb8b888c6117b7565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436110fa919061222a565b81526001600160a01b03808e1660208301528c1660408201523360609091015290508515611163576002820154600c1b611000600160ac1b03166000908152600a602052604090205461115190889088903361183b565b61115c83828461186d565b505061121a565b68056bc75e2d631000008160400151116111825761115c83828461186d565b611000600160ac1b0333600c1b16600090815260056020526040812054906111ba6111b5670de0b6b3a764000084612242565b61196b565b90506111ce670de0b6b3a764000082612264565b836040015111806111ec575069d3c21bcecceda10000008360400151115b1561120a57604051630e0c7c2360e11b815260040160405180910390fd5b61121585848661186d565b505050505b61122360018055565b9998505050505050505050565b6000815b8082101561137c57600060086000868686818110611254576112546120b8565b905060200201358152602001908152602001600020905061127481611a27565b600281015481546000908152600760205260408120805490919061129990849061222a565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116112fd57600082815260056020526040902068056bc75e2d63100000905561130f565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff888888818110611350576113506120b8565b9050602002013560405161136691815260200190565b60405180910390a2846001019450505050611234565b808210156113925763dfb035c96000526004601cfd5b50505050565b600760205260009081526040902080546001820180549192916113ba9061211b565b80601f01602080910402602001604051908101604052809291908181526020018280546113e69061211b565b80156114335780601f1061140857610100808354040283529160200191611433565b820191906000526020600020905b81548152906001019060200180831161141657829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b031633146114ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806114c05763df9578836000526004601cfd5b815181146114d65763ff633a386000526004601cfd5b60208301602083016020830282015b808314610fb5578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506114e5565b6000546001600160a01b031633146115835760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006115cc60035490565b905090565b600154600214156115f55760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061168c5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146116cd576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806113925760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a335760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff191690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106118345760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6118508484846001600160a01b038516611a6e565b61139257604051631dc23a5f60e11b815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611913908490612213565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b8360405160240161198991815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611a1e5763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611a4c5760405163d0404f8560e01b815260040160405180910390fd5b60028101546116cd576040516331da482760e11b815260040160405180910390fd5b60008315611aaa578360051b8501855b803580851160051b94855260209485185260406000209301818110611aa257611aa7565b611a7e565b50505b501492915050565b828054611abe9061211b565b90600052602060002090601f016020900481019282611ae05760008555611b26565b82601f10611af957805160ff1916838001178555611b26565b82800160010185558215611b26579182015b82811115611b26578251825591602001919060010190611b0b565b50611b32929150611b36565b5090565b5b80821115611b325760008155600101611b37565b600060208284031215611b5d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ba357611ba3611b64565b604052919050565b600067ffffffffffffffff821115611bc557611bc5611b64565b5060051b60200190565b6001600160a01b03811681146116cd57600080fd5b600082601f830112611bf557600080fd5b81356020611c0a611c0583611bab565b611b7a565b82815260059290921b84018101918181019086841115611c2957600080fd5b8286015b84811015611c4d578035611c4081611bcf565b8352918301918301611c2d565b509695505050505050565b600060208284031215611c6a57600080fd5b813567ffffffffffffffff811115611c8157600080fd5b611c8d84828501611be4565b949350505050565b600060208284031215611ca757600080fd5b813561183481611bcf565b600080600080600060808688031215611cca57600080fd5b8535611cd581611bcf565b945060208601359350604086013567ffffffffffffffff80821115611cf957600080fd5b818801915088601f830112611d0d57600080fd5b813581811115611d1c57600080fd5b896020828501011115611d2e57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611d5557600080fd5b50813567ffffffffffffffff811115611d6d57600080fd5b6020830191508360208260051b8501011115611d8857600080fd5b9250929050565b600080600060408486031215611da457600080fd5b83359250602084013567ffffffffffffffff811115611dc257600080fd5b611dce86828701611d43565b9497909650939450505050565b60008060008060008060c08789031215611df457600080fd5b863595506020870135611e0681611bcf565b945060408701359350606087013592506080870135915060a087013560ff81168114611e3157600080fd5b809150509295509295509295565b60008060408385031215611e5257600080fd5b8235611e5d81611bcf565b946020939093013593505050565b600080600080600080600080600060e08a8c031215611e8957600080fd5b8935985060208a0135611e9b81611bcf565b975060408a0135611eab81611bcf565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115611ed657600080fd5b611ee28d838e01611d43565b909650945060c08c0135915080821115611efb57600080fd5b50611f088c828d01611d43565b915080935050809150509295985092959850929598565b60008060208385031215611f3257600080fd5b823567ffffffffffffffff811115611f4957600080fd5b611f5585828601611d43565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b81811015611f955788810183015185820160c001528201611f79565b81811115611fa757600060c083870101525b50601f01601f1916830160c0019150611fcd905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b6000806040838503121561200157600080fd5b823567ffffffffffffffff8082111561201957600080fd5b61202586838701611be4565b935060209150818501358181111561203c57600080fd5b85019050601f8101861361204f57600080fd5b803561205d611c0582611bab565b81815260059190911b8201830190838101908883111561207c57600080fd5b928401925b828410156120a9578335801515811461209a5760008081fd5b82529284019290840190612081565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561210f5783516001600160a01b0316835292840192918401916001016120ea565b50909695505050505050565b600181811c9082168061212f57607f821691505b6020821081141561215057634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061217257607f831692505b602080841082141561219257634e487b7160e01b86526022600452602486fd5b8180156121a657600181146121b7576121e4565b60ff198616895284890196506121e4565b60008c81526020902060005b868110156121dc5781548b8201529085019083016121c3565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612225576122256121fd565b500390565b6000821982111561223d5761223d6121fd565b500190565b60008261225f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561227e5761227e6121fd565b50029056fea164736f6c6343000809000a", + "bytecode": "0x60806040526001805560405162002a9a38038062002a9a8339810160408190526200002a916200049d565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506200007685620000a3565b620000818362000133565b6200008c84620001bd565b620000988282620002a1565b505050505062000620565b6000546001600160a01b03163314620000f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516200012891815260200190565b60405180910390a150565b6000546001600160a01b031633146200017e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9060200162000128565b6000546001600160a01b03163314620002085760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b80516000905b808210156200026e57600062000246848481518110620002325762000232620005bb565b60200260200101516200038760201b60201c565b6000908152600660205260409020805460ff191660019081179091559290920191506200020e565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051620001289190620005d1565b6000546001600160a01b03163314620002ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b815180620003025763df9578836000526004601cfd5b81518114620003195763ff633a386000526004601cfd5b60208301602083016020830282015b8083146200037f578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a360208301925060208201915062000328565b505050505050565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003d857620003d862000397565b604052919050565b60006001600160401b03821115620003fc57620003fc62000397565b5060051b60200190565b6001600160a01b03811681146200041c57600080fd5b50565b600082601f8301126200043157600080fd5b815160206200044a6200044483620003e0565b620003ad565b82815260059290921b840181019181810190868411156200046a57600080fd5b8286015b8481101562000492578051620004848162000406565b83529183019183016200046e565b509695505050505050565b600080600080600060a08688031215620004b657600080fd5b8551602080880151919650906001600160401b0380821115620004d857600080fd5b620004e68a838b016200041f565b965060408901519150620004fa8262000406565b6060890151919550808211156200051057600080fd5b6200051e8a838b016200041f565b945060808901519150808211156200053557600080fd5b508701601f810189136200054857600080fd5b8051620005596200044482620003e0565b81815260059190911b8201830190838101908b8311156200057957600080fd5b928401925b82841015620005a95783518015158114620005995760008081fd5b825292840192908401906200057e565b80955050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015620006145783516001600160a01b031683529284019291840191600101620005ed565b50909695505050505050565b61246a80620006306000396000f3fe6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611d07565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611e14565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611e51565b6106ec565b34801561023f57600080fd5b5061029861024e366004611d07565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611e6e565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611f4b565b610991565b34801561033f57600080fd5b5061036361034e366004611d07565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611e51565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611d07565b610a51565b3480156103ca57600080fd5b50610211610acf565b3480156103df57600080fd5b506103636103ee366004611e51565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611d07565b610b59565b34801561044b57600080fd5b5061021161045a366004611f97565b610be1565b34801561046b57600080fd5b506101de61047a366004611d07565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611ffb565b61103a565b3480156104b857600080fd5b506101de6104c7366004612027565b6110e6565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f3660046120db565b611311565b34801561053057600080fd5b5061054461053f366004611d07565b611479565b6040516101e895949392919061211d565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611d07565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d63660046121aa565b611543565b3480156105e757600080fd5b506102116105f6366004611e51565b61161b565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e612274565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e1919061228a565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107e1576040517f1578328e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e96116a2565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a1660408201526001606090910152905061085e6116b2565b831561086e5761086e338561103a565b600083815260076020908152604090912082518155818301518051849361089c926001850192910190611c6e565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff0000000000000000000000000000000000000000009095169190921617929092179091556109269080546001019055565b6109328233308a6116f6565b61093b60018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109996116b2565b6109a2836117a6565b6109ac8282611311565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109dc576109dc84610b59565b600381015481546000835560028301546001600160a01b0392831692610a0591849116836117fc565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a4c60018055565b505050565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610b185760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b2333826118a1565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b62816117a6565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610be96116b2565b60008681526008602052604090206002810154610c32576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4381600301541015610c70576040517ff6fafba000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610ca092600186019290918b9101612312565b604051602081830303815290604052805190602001209050600081604051602001610cf791907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610d5e576040517ff490a6ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610dd29060019060a0016020604051602081039080840390855afa158015610db6573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610e1d576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610e4590836123cf565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610ef6576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb69084906123e6565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610eeb9084906123e6565b90915550610f389050565b818860010154610f0691906123e6565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610f329084906123e6565b90915550505b6004880154610f529084906001600160a01b0316836117fc565b600188015415610fbe5760058801546001600160a01b038e8116911614610faf5760058801546001808a0154610f979286926001600160a01b0390911691901c6117fc565b610faa838e60018b60010154901c6117fc565b610fbe565b610fbe838e8a600101546117fc565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051611019929190918252602082015260400190565b60405180910390a2505050505050505061103260018055565b505050505050565b6001600160a01b0382163314156110b457611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110f06116b2565b6110fa8383611311565b60008a81526007602052604090206003810154600160a01b900460ff1661114d576040517fb2e532de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054871115611188576040517f22bbb43c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111938b888c6118fc565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436111c291906123e6565b81526001600160a01b03808e1660208301528c166040820152336060909101529050851561122b576002820154600c1b611000600160ac1b03166000908152600a60205260409020546112199088908890336119ac565b6112248382846119f7565b50506112fb565b68056bc75e2d6310000081604001511161124a576112248382846119f7565b611000600160ac1b0333600c1b166000908152600560205260408120549061128261127d670de0b6b3a7640000846123fe565b611af5565b9050611296670de0b6b3a764000082612420565b836040015111806112b4575069d3c21bcecceda10000008360400151115b156112eb576040517f1c18f84600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f68584866119f7565b505050505b61130460018055565b9998505050505050505050565b6000815b8082101561145d5760006008600086868681811061133557611335612274565b905060200201358152602001908152602001600020905061135581611bb1565b600281015481546000908152600760205260408120805490919061137a9084906123e6565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116113de57600082815260056020526040902068056bc75e2d6310000090556113f0565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff88888881811061143157611431612274565b9050602002013560405161144791815260200190565b60405180910390a2846001019450505050611315565b808210156114735763dfb035c96000526004601cfd5b50505050565b6007602052600090815260409020805460018201805491929161149b906122d7565b80601f01602080910402602001604051908101604052809291908181526020018280546114c7906122d7565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b0316331461158c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806115a15763df9578836000526004601cfd5b815181146115b75763ff633a386000526004601cfd5b60208301602083016020830282015b808314611032578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506115c6565b6000546001600160a01b031633146116645760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006116ad60035490565b905090565b600154600214156116ef576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b60006040517f23b872dd000000000000000000000000000000000000000000000000000000006000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061179f5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146117f9576040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806114735760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a4c5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106119a5576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b6119c18484846001600160a01b038516611c2a565b611473576040517f3b8474be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611a9d9084906123cf565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b83604051602401611b1391815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611ba85763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611bef576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101546117f9576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008315611c66578360051b8501855b803580851160051b94855260209485185260406000209301818110611c5e57611c63565b611c3a565b50505b501492915050565b828054611c7a906122d7565b90600052602060002090601f016020900481019282611c9c5760008555611ce2565b82601f10611cb557805160ff1916838001178555611ce2565b82800160010185558215611ce2579182015b82811115611ce2578251825591602001919060010190611cc7565b50611cee929150611cf2565b5090565b5b80821115611cee5760008155600101611cf3565b600060208284031215611d1957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5f57611d5f611d20565b604052919050565b600067ffffffffffffffff821115611d8157611d81611d20565b5060051b60200190565b6001600160a01b03811681146117f957600080fd5b600082601f830112611db157600080fd5b81356020611dc6611dc183611d67565b611d36565b82815260059290921b84018101918181019086841115611de557600080fd5b8286015b84811015611e09578035611dfc81611d8b565b8352918301918301611de9565b509695505050505050565b600060208284031215611e2657600080fd5b813567ffffffffffffffff811115611e3d57600080fd5b611e4984828501611da0565b949350505050565b600060208284031215611e6357600080fd5b81356119a581611d8b565b600080600080600060808688031215611e8657600080fd5b8535611e9181611d8b565b945060208601359350604086013567ffffffffffffffff80821115611eb557600080fd5b818801915088601f830112611ec957600080fd5b813581811115611ed857600080fd5b896020828501011115611eea57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611f1157600080fd5b50813567ffffffffffffffff811115611f2957600080fd5b6020830191508360208260051b8501011115611f4457600080fd5b9250929050565b600080600060408486031215611f6057600080fd5b83359250602084013567ffffffffffffffff811115611f7e57600080fd5b611f8a86828701611eff565b9497909650939450505050565b60008060008060008060c08789031215611fb057600080fd5b863595506020870135611fc281611d8b565b945060408701359350606087013592506080870135915060a087013560ff81168114611fed57600080fd5b809150509295509295509295565b6000806040838503121561200e57600080fd5b823561201981611d8b565b946020939093013593505050565b600080600080600080600080600060e08a8c03121561204557600080fd5b8935985060208a013561205781611d8b565b975060408a013561206781611d8b565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561209257600080fd5b61209e8d838e01611eff565b909650945060c08c01359150808211156120b757600080fd5b506120c48c828d01611eff565b915080935050809150509295985092959850929598565b600080602083850312156120ee57600080fd5b823567ffffffffffffffff81111561210557600080fd5b61211185828601611eff565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b818110156121515788810183015185820160c001528201612135565b8181111561216357600060c083870101525b50601f01601f1916830160c0019150612189905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b600080604083850312156121bd57600080fd5b823567ffffffffffffffff808211156121d557600080fd5b6121e186838701611da0565b93506020915081850135818111156121f857600080fd5b85019050601f8101861361220b57600080fd5b8035612219611dc182611d67565b81815260059190911b8201830190838101908883111561223857600080fd5b928401925b8284101561226557833580151581146122565760008081fd5b8252928401929084019061223d565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156122cb5783516001600160a01b0316835292840192918401916001016122a6565b50909695505050505050565b600181811c908216806122eb57607f821691505b6020821081141561230c57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061232e57607f831692505b602080841082141561234e57634e487b7160e01b86526022600452602486fd5b8180156123625760018114612373576123a0565b60ff198616895284890196506123a0565b60008c81526020902060005b868110156123985781548b82015290850190830161237f565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156123e1576123e16123b9565b500390565b600082198211156123f9576123f96123b9565b500190565b60008261241b57634e487b7160e01b600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612458576124586123b9565b50029056fea164736f6c6343000809000a", + "deployedBytecode": "0x6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611d07565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611e14565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611e51565b6106ec565b34801561023f57600080fd5b5061029861024e366004611d07565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611e6e565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611f4b565b610991565b34801561033f57600080fd5b5061036361034e366004611d07565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611e51565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611d07565b610a51565b3480156103ca57600080fd5b50610211610acf565b3480156103df57600080fd5b506103636103ee366004611e51565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611d07565b610b59565b34801561044b57600080fd5b5061021161045a366004611f97565b610be1565b34801561046b57600080fd5b506101de61047a366004611d07565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611ffb565b61103a565b3480156104b857600080fd5b506101de6104c7366004612027565b6110e6565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f3660046120db565b611311565b34801561053057600080fd5b5061054461053f366004611d07565b611479565b6040516101e895949392919061211d565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611d07565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d63660046121aa565b611543565b3480156105e757600080fd5b506102116105f6366004611e51565b61161b565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e612274565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e1919061228a565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107e1576040517f1578328e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e96116a2565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a1660408201526001606090910152905061085e6116b2565b831561086e5761086e338561103a565b600083815260076020908152604090912082518155818301518051849361089c926001850192910190611c6e565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff0000000000000000000000000000000000000000009095169190921617929092179091556109269080546001019055565b6109328233308a6116f6565b61093b60018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109996116b2565b6109a2836117a6565b6109ac8282611311565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109dc576109dc84610b59565b600381015481546000835560028301546001600160a01b0392831692610a0591849116836117fc565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a4c60018055565b505050565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610b185760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b2333826118a1565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b62816117a6565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610be96116b2565b60008681526008602052604090206002810154610c32576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4381600301541015610c70576040517ff6fafba000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610ca092600186019290918b9101612312565b604051602081830303815290604052805190602001209050600081604051602001610cf791907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610d5e576040517ff490a6ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610dd29060019060a0016020604051602081039080840390855afa158015610db6573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610e1d576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610e4590836123cf565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610ef6576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb69084906123e6565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610eeb9084906123e6565b90915550610f389050565b818860010154610f0691906123e6565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610f329084906123e6565b90915550505b6004880154610f529084906001600160a01b0316836117fc565b600188015415610fbe5760058801546001600160a01b038e8116911614610faf5760058801546001808a0154610f979286926001600160a01b0390911691901c6117fc565b610faa838e60018b60010154901c6117fc565b610fbe565b610fbe838e8a600101546117fc565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051611019929190918252602082015260400190565b60405180910390a2505050505050505061103260018055565b505050505050565b6001600160a01b0382163314156110b457611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110f06116b2565b6110fa8383611311565b60008a81526007602052604090206003810154600160a01b900460ff1661114d576040517fb2e532de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054871115611188576040517f22bbb43c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111938b888c6118fc565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436111c291906123e6565b81526001600160a01b03808e1660208301528c166040820152336060909101529050851561122b576002820154600c1b611000600160ac1b03166000908152600a60205260409020546112199088908890336119ac565b6112248382846119f7565b50506112fb565b68056bc75e2d6310000081604001511161124a576112248382846119f7565b611000600160ac1b0333600c1b166000908152600560205260408120549061128261127d670de0b6b3a7640000846123fe565b611af5565b9050611296670de0b6b3a764000082612420565b836040015111806112b4575069d3c21bcecceda10000008360400151115b156112eb576040517f1c18f84600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f68584866119f7565b505050505b61130460018055565b9998505050505050505050565b6000815b8082101561145d5760006008600086868681811061133557611335612274565b905060200201358152602001908152602001600020905061135581611bb1565b600281015481546000908152600760205260408120805490919061137a9084906123e6565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116113de57600082815260056020526040902068056bc75e2d6310000090556113f0565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff88888881811061143157611431612274565b9050602002013560405161144791815260200190565b60405180910390a2846001019450505050611315565b808210156114735763dfb035c96000526004601cfd5b50505050565b6007602052600090815260409020805460018201805491929161149b906122d7565b80601f01602080910402602001604051908101604052809291908181526020018280546114c7906122d7565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b0316331461158c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806115a15763df9578836000526004601cfd5b815181146115b75763ff633a386000526004601cfd5b60208301602083016020830282015b808314611032578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506115c6565b6000546001600160a01b031633146116645760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006116ad60035490565b905090565b600154600214156116ef576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b60006040517f23b872dd000000000000000000000000000000000000000000000000000000006000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061179f5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146117f9576040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806114735760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a4c5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106119a5576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b6119c18484846001600160a01b038516611c2a565b611473576040517f3b8474be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611a9d9084906123cf565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b83604051602401611b1391815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611ba85763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611bef576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101546117f9576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008315611c66578360051b8501855b803580851160051b94855260209485185260406000209301818110611c5e57611c63565b611c3a565b50505b501492915050565b828054611c7a906122d7565b90600052602060002090601f016020900481019282611c9c5760008555611ce2565b82601f10611cb557805160ff1916838001178555611ce2565b82800160010185558215611ce2579182015b82811115611ce2578251825591602001919060010190611cc7565b50611cee929150611cf2565b5090565b5b80821115611cee5760008155600101611cf3565b600060208284031215611d1957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5f57611d5f611d20565b604052919050565b600067ffffffffffffffff821115611d8157611d81611d20565b5060051b60200190565b6001600160a01b03811681146117f957600080fd5b600082601f830112611db157600080fd5b81356020611dc6611dc183611d67565b611d36565b82815260059290921b84018101918181019086841115611de557600080fd5b8286015b84811015611e09578035611dfc81611d8b565b8352918301918301611de9565b509695505050505050565b600060208284031215611e2657600080fd5b813567ffffffffffffffff811115611e3d57600080fd5b611e4984828501611da0565b949350505050565b600060208284031215611e6357600080fd5b81356119a581611d8b565b600080600080600060808688031215611e8657600080fd5b8535611e9181611d8b565b945060208601359350604086013567ffffffffffffffff80821115611eb557600080fd5b818801915088601f830112611ec957600080fd5b813581811115611ed857600080fd5b896020828501011115611eea57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611f1157600080fd5b50813567ffffffffffffffff811115611f2957600080fd5b6020830191508360208260051b8501011115611f4457600080fd5b9250929050565b600080600060408486031215611f6057600080fd5b83359250602084013567ffffffffffffffff811115611f7e57600080fd5b611f8a86828701611eff565b9497909650939450505050565b60008060008060008060c08789031215611fb057600080fd5b863595506020870135611fc281611d8b565b945060408701359350606087013592506080870135915060a087013560ff81168114611fed57600080fd5b809150509295509295509295565b6000806040838503121561200e57600080fd5b823561201981611d8b565b946020939093013593505050565b600080600080600080600080600060e08a8c03121561204557600080fd5b8935985060208a013561205781611d8b565b975060408a013561206781611d8b565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561209257600080fd5b61209e8d838e01611eff565b909650945060c08c01359150808211156120b757600080fd5b506120c48c828d01611eff565b915080935050809150509295985092959850929598565b600080602083850312156120ee57600080fd5b823567ffffffffffffffff81111561210557600080fd5b61211185828601611eff565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b818110156121515788810183015185820160c001528201612135565b8181111561216357600060c083870101525b50601f01601f1916830160c0019150612189905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b600080604083850312156121bd57600080fd5b823567ffffffffffffffff808211156121d557600080fd5b6121e186838701611da0565b93506020915081850135818111156121f857600080fd5b85019050601f8101861361220b57600080fd5b8035612219611dc182611d67565b81815260059190911b8201830190838101908883111561223857600080fd5b928401925b8284101561226557833580151581146122565760008081fd5b8252928401929084019061223d565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156122cb5783516001600160a01b0316835292840192918401916001016122a6565b50909695505050505050565b600181811c908216806122eb57607f821691505b6020821081141561230c57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061232e57607f831692505b602080841082141561234e57634e487b7160e01b86526022600452602486fd5b8180156123625760018114612373576123a0565b60ff198616895284890196506123a0565b60008c81526020902060005b868110156123985781548b82015290850190830161237f565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156123e1576123e16123b9565b500390565b600082198211156123f9576123f96123b9565b500190565b60008261241b57634e487b7160e01b600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612458576124586123b9565b50029056fea164736f6c6343000809000a", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/deploys/goerli.json b/deploys/goerli.json new file mode 100644 index 0000000..53cafaa --- /dev/null +++ b/deploys/goerli.json @@ -0,0 +1,8 @@ +{ + "signers": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "p2pix": "0x5f3EFA9A90532914545CEf527C530658af87e196", + "token": "0x294003F602c321627152c6b7DED3EAb5bEa853Ee" +} \ No newline at end of file diff --git a/deploys/polygon-mumbai.json b/deploys/polygon-mumbai.json new file mode 100644 index 0000000..53cafaa --- /dev/null +++ b/deploys/polygon-mumbai.json @@ -0,0 +1,8 @@ +{ + "signers": [ + "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266", + "0x70997970C51812dc3A010C7d01b50e0d17dc79C8" + ], + "p2pix": "0x5f3EFA9A90532914545CEf527C530658af87e196", + "token": "0x294003F602c321627152c6b7DED3EAb5bEa853Ee" +} \ No newline at end of file diff --git a/hardhat.config.ts b/hardhat.config.ts index 40c6b9a..034426f 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -21,11 +21,21 @@ if (!infuraApiKey) { ); } +const alchemyApiKey: string | undefined = + process.env.ALCHEMY_API_KEY; +if (!alchemyApiKey) { + throw new Error( + "Please set your ALCHEMY_API_KEY in a .env file", + ); +} + const chainIds = { // "{INSERT_NAME}": {INSERT_ID}, hardhat: 31337, mainnet: 1, sepolia: 11155111, + goerli : 5, + "polygon-mumbai": 80001, }; function getChainConfig( @@ -33,9 +43,9 @@ function getChainConfig( ): NetworkUserConfig { let jsonRpcUrl: string; switch (chain) { - // case "{INSERT_NAME}": - // jsonRpcUrl = "{INSERT_URL}"; - // break; + case "polygon-mumbai": + jsonRpcUrl = "https://polygon-mumbai.g.alchemy.com/v2/" + alchemyApiKey; + break; default: jsonRpcUrl = "https://" + chain + ".infura.io/v3/" + infuraApiKey; @@ -47,6 +57,7 @@ function getChainConfig( mnemonic, path: "m/44'/60'/0'/0", }, + // gasPrice: 8000000000, chainId: chainIds[chain], url: jsonRpcUrl, }; @@ -58,6 +69,8 @@ const config: HardhatUserConfig = { apiKey: { mainnet: process.env.ETHERSCAN_API_KEY || "", rinkeby: process.env.ETHERSCAN_API_KEY || "", + goerli: process.env.ETHERSCAN_API_KEY || "", + polygonMumbai: process.env.POLYGONSCAN_API_KEY || "", }, // customChains: [ // { @@ -78,7 +91,7 @@ const config: HardhatUserConfig = { ), showTimeSpent: true, showMethodSig: true, - token: "ONE", + token: "ETH", currency: "USD", // gasPriceApi: process.env.GASPRICE_API_ENDPOINT, coinmarketcap: process.env.COINMARKETCAP_API_KEY, @@ -95,7 +108,9 @@ const config: HardhatUserConfig = { }, // network: getChainConfig("{INSERT_NAME}"), mainnet: getChainConfig("mainnet"), + goerli: getChainConfig("goerli"), sepolia: getChainConfig("sepolia"), + "polygon-mumbai": getChainConfig("polygon-mumbai"), }, paths: { artifacts: "./artifacts", @@ -111,7 +126,7 @@ const config: HardhatUserConfig = { }, optimizer: { enabled: true, - runs: 800, + runs: 2000, }, }, }, diff --git a/package.json b/package.json index 0bf95a8..8ba5460 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,10 @@ "test": "hardhat test", "deploy1:localhost": "hardhat run scripts/1-deploy-mockToken.ts --network localhost", "deploy2:localhost": "hardhat run scripts/2-deploy-p2pix.ts --network localhost", + "deploy1:goerli": "hardhat run scripts/1-deploy-mockToken.ts --network goerli", + "deploy2:goerli": "hardhat run scripts/2-deploy-p2pix.ts --network goerli", + "deploy1:mumbai": "hardhat run scripts/1-deploy-mockToken.ts --network polygon-mumbai", + "deploy2:mumbai": "hardhat run scripts/2-deploy-p2pix.ts --network polygon-mumbai", "coverage": "hardhat coverage --solcoverjs ./.solcover.js --temp artifacts --testfiles \"test/**/*.ts\" && yarn typechain", "lint": "yarn lint:sol && yarn lint:ts && yarn prettier:check", "lint:sol": "solhint --config ./.solhint.json --max-warnings 0 \"contracts/**/*.sol\"", diff --git a/scripts/1-deploy-mockToken.ts b/scripts/1-deploy-mockToken.ts index f4db7ea..7c299e7 100644 --- a/scripts/1-deploy-mockToken.ts +++ b/scripts/1-deploy-mockToken.ts @@ -6,7 +6,7 @@ import { ethers, network } from "hardhat"; import { Deploys } from "../test/utils/fixtures"; -// import hre from "hardhat"; +import hre from "hardhat"; let deploysJson: Deploys; const supply: BigNumber = ethers.utils.parseEther("20000000"); @@ -34,18 +34,19 @@ const main = async () => { deploysJson.token = erc20.address; console.log("🚀 Mock Token Deployed:", erc20.address); + await erc20.deployTransaction.wait(6); fs.writeFileSync( `./deploys/${network.name}.json`, JSON.stringify(deploysJson, undefined, 2), ); - /* UNCOMMENT WHEN DEPLOYING TO MAINNET */ - //verify - // await hre.run("verify:verify", { - // address: erc20.address, - // constructorArguments: supply, - // }); + /* UNCOMMENT WHEN DEPLOYING TO MAINNET/PUBLIC TESTNETS */ + // verify + await hre.run("verify:verify", { + address: erc20.address, + constructorArguments: [supply], + }); }; main() diff --git a/scripts/2-deploy-p2pix.ts b/scripts/2-deploy-p2pix.ts index b5208e6..cbcc6aa 100644 --- a/scripts/2-deploy-p2pix.ts +++ b/scripts/2-deploy-p2pix.ts @@ -5,6 +5,8 @@ import { ethers, network } from "hardhat"; import { Deploys } from "../test/utils/fixtures"; +import hre from "hardhat"; + let deploysJson: Deploys; const main = async () => { @@ -40,18 +42,26 @@ const main = async () => { deploysJson.p2pix = p2pix.address; console.log("🚀 P2PIX Deployed:", p2pix.address); + await p2pix.deployTransaction.wait(6); fs.writeFileSync( `./deploys/${network.name}.json`, JSON.stringify(deploysJson, undefined, 2), ); - /* UNCOMMENT WHEN DEPLOYING TO MAINNET */ + /* UNCOMMENT WHEN DEPLOYING TO MAINNET/PUBLIC TESTNETS */ //verify - // await hre.run("verify:verify", { - // address: p2pix.address, - // constructorArguments: [2, deploysJson.signers], - // }); + await hre.run("verify:verify", { + address: p2pix.address, + constructorArguments: + [ + 10, + deploysJson.signers, + reputation.address, + [deploysJson.token], + [true], + ], + }); }; main() diff --git a/src/types/factories/Reputation__factory.ts b/src/types/factories/Reputation__factory.ts index cffb401..f4563d1 100644 --- a/src/types/factories/Reputation__factory.ts +++ b/src/types/factories/Reputation__factory.ts @@ -105,7 +105,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a35061036b806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100dc57600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102a6565b6100e8565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac3660046102d6565b6101a9565b6000546100c4906001600160a01b031681565b6040516001600160a01b039091168152602001610095565b61008b643a3529440081565b6000546001600160a01b031633146101465760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b60006101cc6101b88380610305565b6101c790643a35294400610324565b6101f4565b6101d983620f4240610305565b6101e3919061033c565b6101ee906001610324565b92915050565b60b58171010000000000000000000000000000000000811061021b5760409190911b9060801c5b690100000000000000000081106102375760209190911b9060401c5b65010000000000811061024f5760109190911b9060201c5b630100000081106102655760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b6000602082840312156102b857600080fd5b81356001600160a01b03811681146102cf57600080fd5b9392505050565b6000602082840312156102e857600080fd5b5035919050565b634e487b7160e01b600052601160045260246000fd5b600081600019048311821515161561031f5761031f6102ef565b500290565b60008219821115610337576103376102ef565b500190565b60008261035957634e487b7160e01b600052601260045260246000fd5b50049056fea164736f6c6343000809000a"; + "0x608060405234801561001057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a350610416806100616000396000f3fe608060405234801561001057600080fd5b50600436106100675760003560e01c80634d2b1791116100505780634d2b17911461009e5780638da5cb5b146100b1578063a4b34557146100f657600080fd5b806313af40351461006c5780631a861d2614610081575b600080fd5b61007f61007a3660046102f4565b610102565b005b61008b620f424081565b6040519081526020015b60405180910390f35b61008b6100ac366004610331565b6101f7565b6000546100d19073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610095565b61008b643a3529440081565b60005473ffffffffffffffffffffffffffffffffffffffff163314610187576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f554e415554484f52495a45440000000000000000000000000000000000000000604482015260640160405180910390fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b600061021a6102068380610379565b61021590643a352944006103b6565b610242565b61022783620f4240610379565b61023191906103ce565b61023c9060016103b6565b92915050565b60b5817101000000000000000000000000000000000081106102695760409190911b9060801c5b690100000000000000000081106102855760209190911b9060401c5b65010000000000811061029d5760109190911b9060201c5b630100000081106102b35760089190911b9060101c5b62010000010260121c80820401600190811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900390565b60006020828403121561030657600080fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461032a57600080fd5b9392505050565b60006020828403121561034357600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156103b1576103b161034a565b500290565b600082198211156103c9576103c961034a565b500190565b600082610404577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b50049056fea164736f6c6343000809000a"; type ReputationConstructorParams = | [signer?: Signer] diff --git a/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts b/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts index 5374c32..97aed4d 100644 --- a/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts +++ b/src/types/factories/lib/mock/mockToken.sol/MockToken__factory.ts @@ -346,7 +346,7 @@ const _abi = [ ]; const _bytecode = - "0x60e06040523480156200001157600080fd5b506040516200105238038062001052833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610c87620003cb60003960006104630152600061042e015260006101540152610c876000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108ad565b60405180910390f35b61011561011036600461091e565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610948565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e366004610984565b60036020526000908152604090205481565b61012e6101be366004610984565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461091e565b610492565b6101fe6101f93660046109a6565b61050a565b005b61012e61020e366004610a19565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610a62565b610762565b6000805461024b90610b2d565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b2d565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610b7e565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610b7e565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107a8565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b2d565b336000908152600360205260408120805483919083906104b3908490610b7e565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b4284101561055f5760405162461bcd60e51b815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161056b61042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e08301909152805192019190912061190160f01b6101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa158015610677573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106ad5750876001600160a01b0316816001600160a01b0316145b6106f95760405162461bcd60e51b815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610556565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107a25761079284828151811061078457610784610b95565b602002602001015184610842565b61079b81610bab565b9050610767565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516107da9190610bc6565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108549190610c62565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156108da578581018301518582016040015282016108be565b818111156108ec576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461091957600080fd5b919050565b6000806040838503121561093157600080fd5b61093a83610902565b946020939093013593505050565b60008060006060848603121561095d57600080fd5b61096684610902565b925061097460208501610902565b9150604084013590509250925092565b60006020828403121561099657600080fd5b61099f82610902565b9392505050565b600080600080600080600060e0888a0312156109c157600080fd5b6109ca88610902565b96506109d860208901610902565b95506040880135945060608801359350608088013560ff811681146109fc57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a2c57600080fd5b610a3583610902565b9150610a4360208401610902565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610a7557600080fd5b823567ffffffffffffffff80821115610a8d57600080fd5b818501915085601f830112610aa157600080fd5b8135602082821115610ab557610ab5610a4c565b8160051b604051601f19603f83011681018181108682111715610ada57610ada610a4c565b604052928352818301935084810182019289841115610af857600080fd5b948201945b83861015610b1d57610b0e86610902565b85529482019493820193610afd565b9997909101359750505050505050565b600181811c90821680610b4157607f821691505b60208210811415610b6257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610b9057610b90610b68565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610bbf57610bbf610b68565b5060010190565b600080835481600182811c915080831680610be257607f831692505b6020808410821415610c0257634e487b7160e01b86526022600452602486fd5b818015610c165760018114610c2757610c54565b60ff19861689528489019650610c54565b60008a81526020902060005b86811015610c4c5781548b820152908501908301610c33565b505084890196505b509498975050505050505050565b60008219821115610c7557610c75610b68565b50019056fea164736f6c6343000809000a"; + "0x60e06040523480156200001157600080fd5b50604051620010bf380380620010bf833981016040819052620000349162000279565b6040805180820182526007815266135bd8dad0949360ca1b6020808301918252835180850190945260048452631350949360e21b908401528151919291601291620000839160009190620001d3565b50815162000099906001906020850190620001d3565b5060ff81166080524660a052620000af620000ca565b60c05250620000c391503390508262000166565b506200039b565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6000604051620000fe9190620002d0565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546200017a919062000374565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001e19062000293565b90600052602060002090601f01602090048101928262000205576000855562000250565b82601f106200022057805160ff191683800117855562000250565b8280016001018555821562000250579182015b828111156200025057825182559160200191906001019062000233565b506200025e92915062000262565b5090565b5b808211156200025e576000815560010162000263565b6000602082840312156200028c57600080fd5b5051919050565b600181811c90821680620002a857607f821691505b60208210811415620002ca57634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620002ed57607f831692505b60208084108214156200030e57634e487b7160e01b86526022600452602486fd5b818015620003255760018114620003375762000366565b60ff1986168952848901965062000366565b60008a81526020902060005b868110156200035e5781548b82015290850190830162000343565b505084890196505b509498975050505050505050565b600082198211156200039657634e487b7160e01b600052601160045260246000fd5b500190565b60805160a05160c051610cf4620003cb60003960006104630152600061042e015260006101540152610cf46000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c806370a082311161008c578063a9059cbb11610066578063a9059cbb146101d8578063d505accf146101eb578063dd62ed3e14610200578063ea66696c1461022b57600080fd5b806370a08231146101905780637ecebe00146101b057806395d89b41146101d057600080fd5b806323b872dd116100bd57806323b872dd1461013c578063313ce5671461014f5780633644e5151461018857600080fd5b806306fdde03146100e4578063095ea7b31461010257806318160ddd14610125575b600080fd5b6100ec61023e565b6040516100f991906108fc565b60405180910390f35b61011561011036600461096d565b6102cc565b60405190151581526020016100f9565b61012e60025481565b6040519081526020016100f9565b61011561014a366004610997565b610338565b6101767f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016100f9565b61012e61042a565b61012e61019e3660046109d3565b60036020526000908152604090205481565b61012e6101be3660046109d3565b60056020526000908152604090205481565b6100ec610485565b6101156101e636600461096d565b610492565b6101fe6101f93660046109f5565b61050a565b005b61012e61020e366004610a68565b600460209081526000928352604080842090915290825290205481565b6101fe610239366004610ab1565b6107b1565b6000805461024b90610b7c565b80601f016020809104026020016040519081016040528092919081815260200182805461027790610b7c565b80156102c45780601f10610299576101008083540402835291602001916102c4565b820191906000526020600020905b8154815290600101906020018083116102a757829003601f168201915b505050505081565b3360008181526004602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925906103279086815260200190565b60405180910390a350600192915050565b6001600160a01b038316600090815260046020908152604080832033845290915281205460001981146103945761036f8382610bcd565b6001600160a01b03861660009081526004602090815260408083203384529091529020555b6001600160a01b038516600090815260036020526040812080548592906103bc908490610bcd565b90915550506001600160a01b03808516600081815260036020526040908190208054870190555190918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906104179087815260200190565b60405180910390a3506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104605761045b6107f7565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6001805461024b90610b7c565b336000908152600360205260408120805483919083906104b3908490610bcd565b90915550506001600160a01b038316600081815260036020526040908190208054850190555133907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef906103279086815260200190565b42841015610579576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f5045524d49545f444541444c494e455f4558504952454400000000000000000060448201526064015b60405180910390fd5b6000600161058561042a565b6001600160a01b038a811660008181526005602090815260409182902080546001810190915582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98184015280840194909452938d166060840152608083018c905260a083019390935260c08083018b90528151808403909101815260e0830190915280519201919091207f19010000000000000000000000000000000000000000000000000000000000006101008301526101028201929092526101228101919091526101420160408051601f198184030181528282528051602091820120600084529083018083525260ff871690820152606081018590526080810184905260a0016020604051602081039080840390855afa1580156106ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906106e25750876001600160a01b0316816001600160a01b0316145b610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f494e56414c49445f5349474e45520000000000000000000000000000000000006044820152606401610570565b6001600160a01b0390811660009081526004602090815260408083208a8516808552908352928190208990555188815291928a16917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a350505050505050565b815160005b818110156107f1576107e18482815181106107d3576107d3610be4565b602002602001015184610891565b6107ea81610bfa565b90506107b6565b50505050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60006040516108299190610c15565b6040805191829003822060208301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b80600260008282546108a39190610ccf565b90915550506001600160a01b0382166000818152600360209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b600060208083528351808285015260005b818110156109295785810183015185820160400152820161090d565b8181111561093b576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461096857600080fd5b919050565b6000806040838503121561098057600080fd5b61098983610951565b946020939093013593505050565b6000806000606084860312156109ac57600080fd5b6109b584610951565b92506109c360208501610951565b9150604084013590509250925092565b6000602082840312156109e557600080fd5b6109ee82610951565b9392505050565b600080600080600080600060e0888a031215610a1057600080fd5b610a1988610951565b9650610a2760208901610951565b95506040880135945060608801359350608088013560ff81168114610a4b57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610a7b57600080fd5b610a8483610951565b9150610a9260208401610951565b90509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215610ac457600080fd5b823567ffffffffffffffff80821115610adc57600080fd5b818501915085601f830112610af057600080fd5b8135602082821115610b0457610b04610a9b565b8160051b604051601f19603f83011681018181108682111715610b2957610b29610a9b565b604052928352818301935084810182019289841115610b4757600080fd5b948201945b83861015610b6c57610b5d86610951565b85529482019493820193610b4c565b9997909101359750505050505050565b600181811c90821680610b9057607f821691505b60208210811415610bb157634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082821015610bdf57610bdf610bb7565b500390565b634e487b7160e01b600052603260045260246000fd5b6000600019821415610c0e57610c0e610bb7565b5060010190565b600080835481600182811c915080831680610c3157607f831692505b6020808410821415610c5157634e487b7160e01b86526022600452602486fd5b818015610c655760018114610c9457610cc1565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00861689528489019650610cc1565b60008a81526020902060005b86811015610cb95781548b820152908501908301610ca0565b505084890196505b509498975050505050505050565b60008219821115610ce257610ce2610bb7565b50019056fea164736f6c6343000809000a"; type MockTokenConstructorParams = | [signer?: Signer] diff --git a/src/types/factories/p2pix.sol/P2PIX__factory.ts b/src/types/factories/p2pix.sol/P2PIX__factory.ts index 3518e8e..985a949 100644 --- a/src/types/factories/p2pix.sol/P2PIX__factory.ts +++ b/src/types/factories/p2pix.sol/P2PIX__factory.ts @@ -929,7 +929,7 @@ const _abi = [ ]; const _bytecode = - "0x608060405260018055604051620028c0380380620028c08339810160408190526200002a916200049d565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506200007685620000a3565b620000818362000133565b6200008c84620001bd565b620000988282620002a1565b505050505062000620565b6000546001600160a01b03163314620000f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516200012891815260200190565b60405180910390a150565b6000546001600160a01b031633146200017e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9060200162000128565b6000546001600160a01b03163314620002085760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b80516000905b808210156200026e57600062000246848481518110620002325762000232620005bb565b60200260200101516200038760201b60201c565b6000908152600660205260409020805460ff191660019081179091559290920191506200020e565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051620001289190620005d1565b6000546001600160a01b03163314620002ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b815180620003025763df9578836000526004601cfd5b81518114620003195763ff633a386000526004601cfd5b60208301602083016020830282015b8083146200037f578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a360208301925060208201915062000328565b505050505050565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003d857620003d862000397565b604052919050565b60006001600160401b03821115620003fc57620003fc62000397565b5060051b60200190565b6001600160a01b03811681146200041c57600080fd5b50565b600082601f8301126200043157600080fd5b815160206200044a6200044483620003e0565b620003ad565b82815260059290921b840181019181810190868411156200046a57600080fd5b8286015b8481101562000492578051620004848162000406565b83529183019183016200046e565b509695505050505050565b600080600080600060a08688031215620004b657600080fd5b8551602080880151919650906001600160401b0380821115620004d857600080fd5b620004e68a838b016200041f565b965060408901519150620004fa8262000406565b6060890151919550808211156200051057600080fd5b6200051e8a838b016200041f565b945060808901519150808211156200053557600080fd5b508701601f810189136200054857600080fd5b8051620005596200044482620003e0565b81815260059190911b8201830190838101908b8311156200057957600080fd5b928401925b82841015620005a95783518015158114620005995760008081fd5b825292840192908401906200057e565b80955050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015620006145783516001600160a01b031683529284019291840191600101620005ed565b50909695505050505050565b61229080620006306000396000f3fe6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611b4b565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611c58565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611c95565b6106ec565b34801561023f57600080fd5b5061029861024e366004611b4b565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611cb2565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611d8f565b610978565b34801561033f57600080fd5b5061036361034e366004611b4b565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611c95565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611b4b565b610a38565b3480156103ca57600080fd5b50610211610ab6565b3480156103df57600080fd5b506103636103ee366004611c95565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611b4b565b610b40565b34801561044b57600080fd5b5061021161045a366004611ddb565b610bc8565b34801561046b57600080fd5b506101de61047a366004611b4b565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611e3f565b610fbd565b3480156104b857600080fd5b506101de6104c7366004611e6b565b611050565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f366004611f1f565b611230565b34801561053057600080fd5b5061054461053f366004611b4b565b611398565b6040516101e8959493929190611f61565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611b4b565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d6366004611fee565b611462565b3480156105e757600080fd5b506102116105f6366004611c95565b61153a565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e6120b8565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e191906120ce565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107c857604051630abc194760e11b815260040160405180910390fd5b6107d06115c1565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a166040820152600160609091015290506108456115d1565b8315610855576108553385610fbd565b6000838152600760209081526040909120825181558183015180518493610883926001850192910190611ab2565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff00000000000000000000000000000000000000000090951691909216179290921790915561090d9080546001019055565b6109198233308a6115fc565b61092260018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109806115d1565b61098983611693565b6109938282611230565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109c3576109c384610b40565b600381015481546000835560028301546001600160a01b03928316926109ec91849116836116d0565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a3360018055565b505050565b6000546001600160a01b03163314610a815760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610aff5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b0a338261175c565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b4981611693565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610bd06115d1565b60008681526008602052604090206002810154610c00576040516331da482760e11b815260040160405180910390fd5b4381600301541015610c25576040516307b7d7dd60e51b815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610c5592600186019290918b9101612156565b604051602081830303815290604052805190602001209050600081604051602001610cac91907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610cfa57604051637a48537560e11b815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610d6e9060019060a0016020604051602081039080840390855afa158015610d52573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610da057604051632057875960e21b815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610dc89083612213565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610e79576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610e3990849061222a565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610e6e90849061222a565b90915550610ebb9050565b818860010154610e89919061222a565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb590849061222a565b90915550505b6004880154610ed59084906001600160a01b0316836116d0565b600188015415610f415760058801546001600160a01b038e8116911614610f325760058801546001808a0154610f1a9286926001600160a01b0390911691901c6116d0565b610f2d838e60018b60010154901c6116d0565b610f41565b610f41838e8a600101546116d0565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051610f9c929190918252602082015260400190565b60405180910390a25050505050505050610fb560018055565b505050505050565b6001600160a01b03821633141561103757611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040516342e8fb9360e11b815260040160405180910390fd5b600061105a6115d1565b6110648383611230565b60008a81526007602052604090206003810154600160a01b900460ff1661109e57604051635972996f60e11b815260040160405180910390fd5b80548711156110c0576040516308aeed0f60e21b815260040160405180910390fd5b6110cb8b888c6117b7565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436110fa919061222a565b81526001600160a01b03808e1660208301528c1660408201523360609091015290508515611163576002820154600c1b611000600160ac1b03166000908152600a602052604090205461115190889088903361183b565b61115c83828461186d565b505061121a565b68056bc75e2d631000008160400151116111825761115c83828461186d565b611000600160ac1b0333600c1b16600090815260056020526040812054906111ba6111b5670de0b6b3a764000084612242565b61196b565b90506111ce670de0b6b3a764000082612264565b836040015111806111ec575069d3c21bcecceda10000008360400151115b1561120a57604051630e0c7c2360e11b815260040160405180910390fd5b61121585848661186d565b505050505b61122360018055565b9998505050505050505050565b6000815b8082101561137c57600060086000868686818110611254576112546120b8565b905060200201358152602001908152602001600020905061127481611a27565b600281015481546000908152600760205260408120805490919061129990849061222a565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116112fd57600082815260056020526040902068056bc75e2d63100000905561130f565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff888888818110611350576113506120b8565b9050602002013560405161136691815260200190565b60405180910390a2846001019450505050611234565b808210156113925763dfb035c96000526004601cfd5b50505050565b600760205260009081526040902080546001820180549192916113ba9061211b565b80601f01602080910402602001604051908101604052809291908181526020018280546113e69061211b565b80156114335780601f1061140857610100808354040283529160200191611433565b820191906000526020600020905b81548152906001019060200180831161141657829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b031633146114ab5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806114c05763df9578836000526004601cfd5b815181146114d65763ff633a386000526004601cfd5b60208301602083016020830282015b808314610fb5578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506114e5565b6000546001600160a01b031633146115835760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006115cc60035490565b905090565b600154600214156115f55760405163558a1e0360e11b815260040160405180910390fd5b6002600155565b60006040516323b872dd60e01b6000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061168c5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146116cd576040516342e8fb9360e11b815260040160405180910390fd5b50565b600060405163a9059cbb60e01b6000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806113925760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a335760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b6bffffffffffffffffffffffff191690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106118345760405163d0404f8560e01b815260040160405180910390fd5b9392505050565b6118508484846001600160a01b038516611a6e565b61139257604051631dc23a5f60e11b815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611913908490612213565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b8360405160240161198991815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611a1e5763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611a4c5760405163d0404f8560e01b815260040160405180910390fd5b60028101546116cd576040516331da482760e11b815260040160405180910390fd5b60008315611aaa578360051b8501855b803580851160051b94855260209485185260406000209301818110611aa257611aa7565b611a7e565b50505b501492915050565b828054611abe9061211b565b90600052602060002090601f016020900481019282611ae05760008555611b26565b82601f10611af957805160ff1916838001178555611b26565b82800160010185558215611b26579182015b82811115611b26578251825591602001919060010190611b0b565b50611b32929150611b36565b5090565b5b80821115611b325760008155600101611b37565b600060208284031215611b5d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611ba357611ba3611b64565b604052919050565b600067ffffffffffffffff821115611bc557611bc5611b64565b5060051b60200190565b6001600160a01b03811681146116cd57600080fd5b600082601f830112611bf557600080fd5b81356020611c0a611c0583611bab565b611b7a565b82815260059290921b84018101918181019086841115611c2957600080fd5b8286015b84811015611c4d578035611c4081611bcf565b8352918301918301611c2d565b509695505050505050565b600060208284031215611c6a57600080fd5b813567ffffffffffffffff811115611c8157600080fd5b611c8d84828501611be4565b949350505050565b600060208284031215611ca757600080fd5b813561183481611bcf565b600080600080600060808688031215611cca57600080fd5b8535611cd581611bcf565b945060208601359350604086013567ffffffffffffffff80821115611cf957600080fd5b818801915088601f830112611d0d57600080fd5b813581811115611d1c57600080fd5b896020828501011115611d2e57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611d5557600080fd5b50813567ffffffffffffffff811115611d6d57600080fd5b6020830191508360208260051b8501011115611d8857600080fd5b9250929050565b600080600060408486031215611da457600080fd5b83359250602084013567ffffffffffffffff811115611dc257600080fd5b611dce86828701611d43565b9497909650939450505050565b60008060008060008060c08789031215611df457600080fd5b863595506020870135611e0681611bcf565b945060408701359350606087013592506080870135915060a087013560ff81168114611e3157600080fd5b809150509295509295509295565b60008060408385031215611e5257600080fd5b8235611e5d81611bcf565b946020939093013593505050565b600080600080600080600080600060e08a8c031215611e8957600080fd5b8935985060208a0135611e9b81611bcf565b975060408a0135611eab81611bcf565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff80821115611ed657600080fd5b611ee28d838e01611d43565b909650945060c08c0135915080821115611efb57600080fd5b50611f088c828d01611d43565b915080935050809150509295985092959850929598565b60008060208385031215611f3257600080fd5b823567ffffffffffffffff811115611f4957600080fd5b611f5585828601611d43565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b81811015611f955788810183015185820160c001528201611f79565b81811115611fa757600060c083870101525b50601f01601f1916830160c0019150611fcd905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b6000806040838503121561200157600080fd5b823567ffffffffffffffff8082111561201957600080fd5b61202586838701611be4565b935060209150818501358181111561203c57600080fd5b85019050601f8101861361204f57600080fd5b803561205d611c0582611bab565b81815260059190911b8201830190838101908883111561207c57600080fd5b928401925b828410156120a9578335801515811461209a5760008081fd5b82529284019290840190612081565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b8181101561210f5783516001600160a01b0316835292840192918401916001016120ea565b50909695505050505050565b600181811c9082168061212f57607f821691505b6020821081141561215057634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061217257607f831692505b602080841082141561219257634e487b7160e01b86526022600452602486fd5b8180156121a657600181146121b7576121e4565b60ff198616895284890196506121e4565b60008c81526020902060005b868110156121dc5781548b8201529085019083016121c3565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b600082821015612225576122256121fd565b500390565b6000821982111561223d5761223d6121fd565b500190565b60008261225f57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561227e5761227e6121fd565b50029056fea164736f6c6343000809000a"; + "0x60806040526001805560405162002a9a38038062002a9a8339810160408190526200002a916200049d565b600080546001600160a01b031916339081178255604051909182917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d76908290a3506200007685620000a3565b620000818362000133565b6200008c84620001bd565b620000988282620002a1565b505050505062000620565b6000546001600160a01b03163314620000f25760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516200012891815260200190565b60405180910390a150565b6000546001600160a01b031633146200017e5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f9060200162000128565b6000546001600160a01b03163314620002085760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b80516000905b808210156200026e57600062000246848481518110620002325762000232620005bb565b60200260200101516200038760201b60201c565b6000908152600660205260409020805460ff191660019081179091559290920191506200020e565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d781604051620001289190620005d1565b6000546001600160a01b03163314620002ec5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401620000e9565b815180620003025763df9578836000526004601cfd5b81518114620003195763ff633a386000526004601cfd5b60208301602083016020830282015b8083146200037f578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a360208301925060208201915062000328565b505050505050565b600c1b611000600160ac1b031690565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620003d857620003d862000397565b604052919050565b60006001600160401b03821115620003fc57620003fc62000397565b5060051b60200190565b6001600160a01b03811681146200041c57600080fd5b50565b600082601f8301126200043157600080fd5b815160206200044a6200044483620003e0565b620003ad565b82815260059290921b840181019181810190868411156200046a57600080fd5b8286015b8481101562000492578051620004848162000406565b83529183019183016200046e565b509695505050505050565b600080600080600060a08688031215620004b657600080fd5b8551602080880151919650906001600160401b0380821115620004d857600080fd5b620004e68a838b016200041f565b965060408901519150620004fa8262000406565b6060890151919550808211156200051057600080fd5b6200051e8a838b016200041f565b945060808901519150808211156200053557600080fd5b508701601f810189136200054857600080fd5b8051620005596200044482620003e0565b81815260059190911b8201830190838101908b8311156200057957600080fd5b928401925b82841015620005a95783518015158114620005995760008081fd5b825292840192908401906200057e565b80955050505050509295509295909350565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b81811015620006145783516001600160a01b031683529284019291840191600101620005ed565b50909695505050505050565b61246a80620006306000396000f3fe6080604052600436106101a55760003560e01c806372fada5c116100e15780638e2749d61161008a57806398a268711161006457806398a268711461056b578063c52164c61461059b578063d6e8b973146105bb578063f7d0e04b146105db57600080fd5b80638e2749d6146105045780638e2a3d36146105245780639872dbfe1461055557600080fd5b80637f94f65d116100bb5780637f94f65d1461048c5780638652b37e146104ac5780638da5cb5b146104cc57600080fd5b806372fada5c1461041f578063758d77d41461043f57806377cd38a41461045f57600080fd5b8063363179721161014e578063574983c811610128578063574983c81461039e5780635fd8c710146103be57806369cc6af4146103d35780636a1460241461040357600080fd5b80633631797214610313578063461f3120146103335780634b2ae9801461037357600080fd5b806316d722401161017f57806316d722401461023357806329cc7d10146102dc5780632dfdf0b5146102fc57600080fd5b806304937320146101b15780630d2a2d44146101f157806313af40351461021357600080fd5b366101ac57005b600080fd5b3480156101bd57600080fd5b506101de6101cc366004611d07565b60056020526000908152604090205481565b6040519081526020015b60405180910390f35b3480156101fd57600080fd5b5061021161020c366004611e14565b6105fb565b005b34801561021f57600080fd5b5061021161022e366004611e51565b6106ec565b34801561023f57600080fd5b5061029861024e366004611d07565b600860205260009081526040902080546001820154600283015460038401546004850154600586015460069096015494959394929391926001600160a01b03918216928216911687565b6040805197885260208801969096529486019390935260608501919091526001600160a01b03908116608085015290811660a08401521660c082015260e0016101e8565b3480156102e857600080fd5b506101de6102f7366004611e6e565b61078d565b34801561030857600080fd5b506003546101de9081565b34801561031f57600080fd5b5061021161032e366004611f4b565b610991565b34801561033f57600080fd5b5061036361034e366004611d07565b60096020526000908152604090205460ff1681565b60405190151581526020016101e8565b34801561037f57600080fd5b506101de61038e366004611e51565b600c1b611000600160ac1b031690565b3480156103aa57600080fd5b506102116103b9366004611d07565b610a51565b3480156103ca57600080fd5b50610211610acf565b3480156103df57600080fd5b506103636103ee366004611e51565b600b6020526000908152604090205460ff1681565b34801561040f57600080fd5b506101de670de0b6b3a764000081565b34801561042b57600080fd5b5061021161043a366004611d07565b610b59565b34801561044b57600080fd5b5061021161045a366004611f97565b610be1565b34801561046b57600080fd5b506101de61047a366004611d07565b600a6020526000908152604090205481565b34801561049857600080fd5b506102116104a7366004611ffb565b61103a565b3480156104b857600080fd5b506101de6104c7366004612027565b6110e6565b3480156104d857600080fd5b506000546104ec906001600160a01b031681565b6040516001600160a01b0390911681526020016101e8565b34801561051057600080fd5b5061021161051f3660046120db565b611311565b34801561053057600080fd5b5061054461053f366004611d07565b611479565b6040516101e895949392919061211d565b34801561056157600080fd5b506101de60045481565b34801561057757600080fd5b50610363610586366004611d07565b60066020526000908152604090205460ff1681565b3480156105a757600080fd5b506002546104ec906001600160a01b031681565b3480156105c757600080fd5b506102116105d63660046121aa565b611543565b3480156105e757600080fd5b506102116105f6366004611e51565b61161b565b6000546001600160a01b031633146106495760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b60448201526064015b60405180910390fd5b80516000905b808210156106b057600061068984848151811061066e5761066e612274565b6020026020010151611000600160ac1b03600c9190911b1690565b6000908152600660205260409020805460ff1916600190811790915592909201915061064f565b50507f14a422d2412784a5749d03da98921fe468c98577b767851389a9f58ea5a363d7816040516106e1919061228a565b60405180910390a150565b6000546001600160a01b031633146107355760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b6000805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081178255604051909133917f8292fce18fa69edf4db7b94ea2e58241df0ae57f97e0a6c9b29067028bf92d769190a350565b6001600160a01b0385166000908152600b6020526040812054869060ff166107e1576040517f1578328e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6107e96116a2565b915060006040518060a0016040528088815260200187878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505050908252503360208201526001600160a01b038a1660408201526001606090910152905061085e6116b2565b831561086e5761086e338561103a565b600083815260076020908152604090912082518155818301518051849361089c926001850192910190611c6e565b5060408201516002820180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199091161790556060830151600392830180546080909501511515600160a01b027fffffffffffffffffffffff0000000000000000000000000000000000000000009095169190921617929092179091556109269080546001019055565b6109328233308a6116f6565b61093b60018055565b604080518481526001600160a01b038a16602082015290810188905233907f25ac57b911b0f66b64c294827f539545fbc3ddd002cafab117776274f3241e4c9060600160405180910390a2505095945050505050565b6109996116b2565b6109a2836117a6565b6109ac8282611311565b60008381526007602052604090206003810154600160a01b900460ff161515600114156109dc576109dc84610b59565b600381015481546000835560028301546001600160a01b0392831692610a0591849116836117fc565b604080518781526020810183905233917f7719804546c0185709e60c90d164447ff251a5ba29af0216faa921350f6bebf7910160405180910390a2505050610a4c60018055565b505050565b6000546001600160a01b03163314610a9a5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b806004557f70fa43ca70216ad905ade86b9e650a691b2ce5a01980d0a81bdd8324141b8511816040516106e191815260200190565b6000546001600160a01b03163314610b185760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b47610b2333826118a1565b60408051338152602081018390527feaff4b37086828766ad3268786972c0cd24259d4c87a80f9d3963a3c3d999b0d91016106e1565b610b62816117a6565b6000818152600760209081526040918290206003810180547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690556002015491518381526001600160a01b03909216917fb4d98b272597e828d9b172c0d44390d5b267040e918088eac8a0a0fadcb81c70910160405180910390a250565b610be96116b2565b60008681526008602052604090206002810154610c32576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b4381600301541015610c70576040517ff6fafba000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054600090815260076020908152604080832060028501549151909392610ca092600186019290918b9101612312565b604051602081830303815290604052805190602001209050600081604051602001610cf791907f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b60408051601f1981840301815291815281516020928301206000858152600990935291205490915060ff16151560011415610d5e576040517ff490a6ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160008082526020820180845284905260ff8816928201929092526060810189905260808101889052610dd29060019060a0016020604051602081039080840390855afa158015610db6573d6000803e3d6000fd5b5050604051601f190151600c1b611000600160ac1b0316919050565b60008181526006602052604090205490915060ff16610e1d576040517f815e1d6400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003840154600286015460018701546001600160a01b0390921691600090610e4590836123cf565b600060028a0181905560038a01819055878152600960205260409020805460ff191660011790556006890154909150336001600160a01b0390911614610ef6576001880154611000600160ac1b0333600c1b1660009081526005602052604081208054909190610eb69084906123e6565b90915550506006880154600c1b611000600160ac1b031660009081526005602052604081208054849290610eeb9084906123e6565b90915550610f389050565b818860010154610f0691906123e6565b611000600160ac1b0333600c1b1660009081526005602052604081208054909190610f329084906123e6565b90915550505b6004880154610f529084906001600160a01b0316836117fc565b600188015415610fbe5760058801546001600160a01b038e8116911614610faf5760058801546001808a0154610f979286926001600160a01b0390911691901c6117fc565b610faa838e60018b60010154901c6117fc565b610fbe565b610fbe838e8a600101546117fc565b8760040160009054906101000a90046001600160a01b03166001600160a01b03167f3fd2eee5028b09fa70abe3da4f6023ea41bfde24cfcb9c167f17d6fbe79eece38f84604051611019929190918252602082015260400190565b60405180910390a2505050505050505061103260018055565b505050505050565b6001600160a01b0382163314156110b457611000600160ac1b03600c83901b166000908152600a602090815260409182902083905581516001600160a01b038516815290810183905281517f0b294da292f26e55fd442b5c0164fbb9013036ff00c5cfdde0efd01c1baaf632929181900390910190a15050565b6040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006110f06116b2565b6110fa8383611311565b60008a81526007602052604090206003810154600160a01b900460ff1661114d576040517fb2e532de00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8054871115611188576040517f22bbb43c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111938b888c6118fc565b915060006040518060e001604052808d81526020018a8152602001898152602001600454436111c291906123e6565b81526001600160a01b03808e1660208301528c166040820152336060909101529050851561122b576002820154600c1b611000600160ac1b03166000908152600a60205260409020546112199088908890336119ac565b6112248382846119f7565b50506112fb565b68056bc75e2d6310000081604001511161124a576112248382846119f7565b611000600160ac1b0333600c1b166000908152600560205260408120549061128261127d670de0b6b3a7640000846123fe565b611af5565b9050611296670de0b6b3a764000082612420565b836040015111806112b4575069d3c21bcecceda10000008360400151115b156112eb576040517f1c18f84600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112f68584866119f7565b505050505b61130460018055565b9998505050505050505050565b6000815b8082101561145d5760006008600086868681811061133557611335612274565b905060200201358152602001908152602001600020905061135581611bb1565b600281015481546000908152600760205260408120805490919061137a9084906123e6565b90915550506000600282018190556006820154600c1b611000600160ac1b031660008181526005602052604090205490915060011c68056bc75e2d6310000081116113de57600082815260056020526040902068056bc75e2d6310000090556113f0565b60008281526005602052604090208190555b60048301546001600160a01b03167f67e089478e21dd12c98e69331c4152f6c9b2038b91e0f28268ffa01558c0b4ff88888881811061143157611431612274565b9050602002013560405161144791815260200190565b60405180910390a2846001019450505050611315565b808210156114735763dfb035c96000526004601cfd5b50505050565b6007602052600090815260409020805460018201805491929161149b906122d7565b80601f01602080910402602001604051908101604052809291908181526020018280546114c7906122d7565b80156115145780601f106114e957610100808354040283529160200191611514565b820191906000526020600020905b8154815290600101906020018083116114f757829003601f168201915b50505050600283015460039093015491926001600160a01b03908116929081169150600160a01b900460ff1685565b6000546001600160a01b0316331461158c5760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b8151806115a15763df9578836000526004601cfd5b815181146115b75763ff633a386000526004601cfd5b60208301602083016020830282015b808314611032578251600052600b60205260406000208251815550815183517f5d6e86e5341d57a92c49934296c51542a25015c9b1782a1c2722a940131c3d9a600080a36020830192506020820191506115c6565b6000546001600160a01b031633146116645760405162461bcd60e51b815260206004820152600c60248201526b15539055551213d49256915160a21b6044820152606401610640565b60028190556040516001600160a01b03821681527fe127cf589a3879da0156d4a24f43b44f65cfa3570de594806b0bfa2fcf06884f906020016106e1565b60006116ad60035490565b905090565b600154600214156116ef576040517fab143c0600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600155565b60006040517f23b872dd000000000000000000000000000000000000000000000000000000006000528460045283602452826044526020600060646000808a5af13d15601f3d116001600051141617169150600060605280604052508061179f5760405162461bcd60e51b815260206004820152601460248201527f5452414e534645525f46524f4d5f4641494c45440000000000000000000000006044820152606401610640565b5050505050565b6000818152600760205260409020600201546001600160a01b031633146117f9576040517f85d1f72600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60006040517fa9059cbb000000000000000000000000000000000000000000000000000000006000528360045282602452602060006044600080895af13d15601f3d11600160005114161716915060006060528060405250806114735760405162461bcd60e51b815260206004820152600f60248201527f5452414e534645525f4641494c454400000000000000000000000000000000006044820152606401610640565b600080600080600085875af1905080610a4c5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c4544000000000000000000000000006044820152606401610640565b6040805160208101859052908101839052606082811b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001690820152600090607401604051602081830303815290604052805190602001209050436008600083815260200190815260200160002060030154106119a5576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b6119c18484846001600160a01b038516611c2a565b611473576040517f3b8474be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083815260086020908152604080832085518155918501516001830155840151600282018190556060850151600383015560808501516004830180546001600160a01b0392831673ffffffffffffffffffffffffffffffffffffffff199182161790915560a087015160058501805491841691831691909117905560c08701516006909401805494909216931692909217909155825490918391611a9d9084906123cf565b9091555050608082015182516040808501518151928352602083015285926001600160a01b0316917f2a28b2ae47b0bd4b104e7cd29b1dfa72846af8c4cfdc009da2ae29db68cb67ea910160405180910390a3505050565b600080634d2b179160e01b83604051602401611b1391815260200190565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600080600060206000855160208701600254617530fa92503d9150600051905080945082611ba85763e10bf1cc6000526004601cfd5b50505050919050565b4381600301541115611bef576040517fd0404f8500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028101546117f9576040517f63b4904e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008315611c66578360051b8501855b803580851160051b94855260209485185260406000209301818110611c5e57611c63565b611c3a565b50505b501492915050565b828054611c7a906122d7565b90600052602060002090601f016020900481019282611c9c5760008555611ce2565b82601f10611cb557805160ff1916838001178555611ce2565b82800160010185558215611ce2579182015b82811115611ce2578251825591602001919060010190611cc7565b50611cee929150611cf2565b5090565b5b80821115611cee5760008155600101611cf3565b600060208284031215611d1957600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611d5f57611d5f611d20565b604052919050565b600067ffffffffffffffff821115611d8157611d81611d20565b5060051b60200190565b6001600160a01b03811681146117f957600080fd5b600082601f830112611db157600080fd5b81356020611dc6611dc183611d67565b611d36565b82815260059290921b84018101918181019086841115611de557600080fd5b8286015b84811015611e09578035611dfc81611d8b565b8352918301918301611de9565b509695505050505050565b600060208284031215611e2657600080fd5b813567ffffffffffffffff811115611e3d57600080fd5b611e4984828501611da0565b949350505050565b600060208284031215611e6357600080fd5b81356119a581611d8b565b600080600080600060808688031215611e8657600080fd5b8535611e9181611d8b565b945060208601359350604086013567ffffffffffffffff80821115611eb557600080fd5b818801915088601f830112611ec957600080fd5b813581811115611ed857600080fd5b896020828501011115611eea57600080fd5b96999598505060200195606001359392505050565b60008083601f840112611f1157600080fd5b50813567ffffffffffffffff811115611f2957600080fd5b6020830191508360208260051b8501011115611f4457600080fd5b9250929050565b600080600060408486031215611f6057600080fd5b83359250602084013567ffffffffffffffff811115611f7e57600080fd5b611f8a86828701611eff565b9497909650939450505050565b60008060008060008060c08789031215611fb057600080fd5b863595506020870135611fc281611d8b565b945060408701359350606087013592506080870135915060a087013560ff81168114611fed57600080fd5b809150509295509295509295565b6000806040838503121561200e57600080fd5b823561201981611d8b565b946020939093013593505050565b600080600080600080600080600060e08a8c03121561204557600080fd5b8935985060208a013561205781611d8b565b975060408a013561206781611d8b565b965060608a0135955060808a0135945060a08a013567ffffffffffffffff8082111561209257600080fd5b61209e8d838e01611eff565b909650945060c08c01359150808211156120b757600080fd5b506120c48c828d01611eff565b915080935050809150509295985092959850929598565b600080602083850312156120ee57600080fd5b823567ffffffffffffffff81111561210557600080fd5b61211185828601611eff565b90969095509350505050565b8581526000602060a08184015286518060a085015260005b818110156121515788810183015185820160c001528201612135565b8181111561216357600060c083870101525b50601f01601f1916830160c0019150612189905060408301866001600160a01b03169052565b6001600160a01b038416606083015282151560808301529695505050505050565b600080604083850312156121bd57600080fd5b823567ffffffffffffffff808211156121d557600080fd5b6121e186838701611da0565b93506020915081850135818111156121f857600080fd5b85019050601f8101861361220b57600080fd5b8035612219611dc182611d67565b81815260059190911b8201830190838101908883111561223857600080fd5b928401925b8284101561226557833580151581146122565760008081fd5b8252928401929084019061223d565b80955050505050509250929050565b634e487b7160e01b600052603260045260246000fd5b6020808252825182820181905260009190848201906040850190845b818110156122cb5783516001600160a01b0316835292840192918401916001016122a6565b50909695505050505050565b600181811c908216806122eb57607f821691505b6020821081141561230c57634e487b7160e01b600052602260045260246000fd5b50919050565b600080855481600182811c91508083168061232e57607f831692505b602080841082141561234e57634e487b7160e01b86526022600452602486fd5b8180156123625760018114612373576123a0565b60ff198616895284890196506123a0565b60008c81526020902060005b868110156123985781548b82015290850190830161237f565b505084890196505b5098855250505050938401929092525050604001919050565b634e487b7160e01b600052601160045260246000fd5b6000828210156123e1576123e16123b9565b500390565b600082198211156123f9576123f96123b9565b500190565b60008261241b57634e487b7160e01b600052601260045260246000fd5b500490565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612458576124586123b9565b50029056fea164736f6c6343000809000a"; type P2PIXConstructorParams = | [signer?: Signer]