Skip to content

Instantly share code, notes, and snippets.

@ennjoy
Created March 10, 2022 15:50
Show Gist options
  • Save ennjoy/446755a0b2e3cc66139a4e39fafa92ed to your computer and use it in GitHub Desktop.
Save ennjoy/446755a0b2e3cc66139a4e39fafa92ed to your computer and use it in GitHub Desktop.
Created using remix-ide: Realtime Ethereum Contract Compiler and Runtime. Load this file by pasting this gists URL or ID at https://remix.ethereum.org/#version=soljson-v0.5.10+commit.5a6ea5b1.js&optimize=false&runs=200&gist=
REMIX EXAMPLE PROJECT
Remix example project is present when Remix loads for the very first time or there are no files existing in the File Explorer.
It contains 3 directories:
1. 'contracts': Holds three contracts with different complexity level, denoted with number prefix in file name.
2. 'scripts': Holds two scripts to deploy a contract. It is explained below.
3. 'tests': Contains one test file for 'Ballot' contract with unit tests in Solidity.
SCRIPTS
The 'scripts' folder contains example async/await scripts for deploying the 'Storage' contract.
For the deployment of any other contract, 'contractName' and 'constructorArgs' should be updated (along with other code if required).
Scripts have full access to the web3.js and ethers.js libraries.
To run a script, right click on file name in the file explorer and click 'Run'. Remember, Solidity file must already be compiled.
Output from script will appear in remix terminal.
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60806040526040518060a00160405280603260ff168152602001602860ff168152602001601e60ff168152602001601460ff168152602001600a60ff16815250600090600562000051929190620001c3565b503480156200005f57600080fd5b506040516200270d3803806200270d833981810160405260208110156200008557600080fd5b8101908080519060200190929190505050620000a781620001b060201b60201c565b15620000b257600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060036040518060400160405280600f8152602001607881525090806001815401808255809150509060018203906000526020600020906002020160009091929091909150600082015181600001556020820151816001015550505060036040518060400160405280601e815260200160648152509080600181540180825580915050906001820390600052602060002090600202016000909192909190915060008201518160000155602082015181600101555050505062000242565b600080823b905060008111915050919050565b82805482825590600052602060002090810192821562000207579160200282015b8281111562000206578251829060ff16905591602001919060010190620001e4565b5b5090506200021691906200021a565b5090565b6200023f91905b808211156200023b57600081600090555060010162000221565b5090565b90565b6124bb80620002526000396000f3fe6080604052600436106101c25760003560e01c806369b11dd5116100f7578063a8aeb6c211610095578063e262113e11610064578063e262113e1461099d578063e85abe09146109c8578063fb4cb32b14610a2d578063fbfcb27914610a92576101c2565b8063a8aeb6c2146107e9578063aecaa6341461084e578063c0806b03146108a7578063d7ffca9114610938576101c2565b80637e3abeea116100d15780637e3abeea146106d7578063852aa16b1461073c578063950d91e91461076757806397c0262a14610792576101c2565b806369b11dd51461061c5780636bb18556146106475780636f9fb98a146106ac576101c2565b806348c37203116101645780635216aeec1161013e5780635216aeec146104de578063581c5ae614610509578063600d20ce1461055a5780636386c1c7146105a9576101c2565b806348c372031461041c57806348d44bd1146104815780634ce87053146104ac576101c2565b8063153ab9df116101a0578063153ab9df146102e457806332bc298c1461034957806336144c9a146103745780633ccfd60b14610405576101c2565b806301c234a8146101c757806303a93c0c146101f2578063040a772e1461027f575b600080fd5b3480156101d357600080fd5b506101dc610af7565b6040518082815260200191505060405180910390f35b3480156101fe57600080fd5b506102416004803603602081101561021557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610afd565b6040518082600360200280838360005b8381101561026c578082015181840152602081019050610251565b5050505090500191505060405180910390f35b34801561028b57600080fd5b506102ce600480360360208110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8a565b6040518082815260200191505060405180910390f35b3480156102f057600080fd5b506103336004803603602081101561030757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e06565b6040518082815260200191505060405180910390f35b34801561035557600080fd5b5061035e610e32565b6040518082815260200191505060405180910390f35b34801561038057600080fd5b506103c36004803603602081101561039757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041157600080fd5b5061041a610ea5565b005b34801561042857600080fd5b5061046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128f565b6040518082815260200191505060405180910390f35b34801561048d57600080fd5b506104966112db565b6040518082815260200191505060405180910390f35b3480156104b857600080fd5b506104c16112e0565b604051808381526020018281526020019250505060405180910390f35b3480156104ea57600080fd5b506104f36112f1565b6040518082815260200191505060405180910390f35b6105586004803603604081101561051f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112f7565b005b34801561056657600080fd5b506105936004803603602081101561057d57600080fd5b8101908080359060200190929190505050611c35565b6040518082815260200191505060405180910390f35b3480156105b557600080fd5b506105f8600480360360208110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c56565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561062857600080fd5b50610631611c83565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b506106966004803603602081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c89565b6040518082815260200191505060405180910390f35b3480156106b857600080fd5b506106c1611d29565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b50610726600480360360208110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d48565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b50610751611e23565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611e30565b6040518082815260200191505060405180910390f35b34801561079e57600080fd5b506107a7611e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f557600080fd5b506108386004803603602081101561080c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e5d565b6040518082815260200191505060405180910390f35b34801561085a57600080fd5b5061088a6004803603602081101561087157600080fd5b81019080803560ff169060200190929190505050611eac565b604051808381526020018281526020019250505060405180910390f35b3480156108b357600080fd5b50610900600480360360408110156108ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611efc565b604051808660ff1660ff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561094457600080fd5b506109876004803603602081101561095b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612083565b6040518082815260200191505060405180910390f35b3480156109a957600080fd5b506109b26120cf565b6040518082815260200191505060405180910390f35b3480156109d457600080fd5b50610a17600480360360208110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120db565b6040518082815260200191505060405180910390f35b348015610a3957600080fd5b50610a7c60048036036020811015610a5057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612127565b6040518082815260200191505060405180910390f35b348015610a9e57600080fd5b50610ae160048036036020811015610ab557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612173565b6040518082815260200191505060405180910390f35b6103e881565b610b05612443565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600380602002604051908101604052809291908260038015610b7e576020028201915b815481526020019060010190808311610b6a575b50505050509050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b8260000180549050811015610dfb576000610c7d610c4e620151806003876000018681548110610c0257fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff1681548110610c2e57fe5b90600052602060002090600202016000015461221d90919063ffffffff16565b856000018481548110610c5d57fe5b9060005260206000209060030201600201546122a390919063ffffffff16565b90508084600101541015610ded576000610d226103e8610d146003886000018781548110610ca757fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff1681548110610cd357fe5b906000526020600020906002020160010154886000018781548110610cf457fe5b90600052602060002090600302016001015461221d90919063ffffffff16565b61232b90919063ffffffff16565b905060008560010154866000018581548110610d3a57fe5b90600052602060002090600302016002015411610d5b578560010154610d7d565b856000018481548110610d6a57fe5b9060005260206000209060030201600201545b90506000428410610d8e5742610d90565b835b905080821015610de957610de6610dd762015180610dc9610dba86866123ba90919063ffffffff16565b8761221d90919063ffffffff16565b61232b90919063ffffffff16565b876122a390919063ffffffff16565b95505b5050505b508080600101915050610bd6565b508092505050919050565b6000610e2b610e1483610b8a565b610e1d846120db565b6122a390919063ffffffff16565b9050919050565b6201518081565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610ef333610b8a565b90506000610f00336120db565b90506000811115610f2b5760008360060181905550610f2881836122a390919063ffffffff16565b91505b60008211610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5573657220686173206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b6000610fb7600a8461232b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611021573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1826040518082815260200191505060405180910390a260003073ffffffffffffffffffffffffffffffffffffffff16319050838110156110d6576110a781856123ba90919063ffffffff16565b85600601819055506110ca856006015486600701546122a390919063ffffffff16565b85600701819055508093505b426110f16201518087600101546122a390919063ffffffff16565b11156110fc57600080fd5b68056bc75e2d6310000084111561113e5761112968056bc75e2d63100000856123ba90919063ffffffff16565b856006018190555068056bc75e2d6310000093505b428560010181905550611184611171600561116360048861221d90919063ffffffff16565b61232b90919063ffffffff16565b86600801546122a390919063ffffffff16565b85600801819055506111c76111b660056111a860018861221d90919063ffffffff16565b61232b90919063ffffffff16565b6001546122a390919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc61120e600561120060048961221d90919063ffffffff16565b61232b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611239573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5856040518082815260200191505060405180910390a25050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701549050919050565b606481565b600080600154600254915091509091565b60015481565b670b1a2bc2ec50000034101561130c57600080fd5b6003805490508160ff1610611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e76616c696420706c616e000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006113b36103e86113a560643461221d90919063ffffffff16565b61232b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141d573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1826040518082815260200191505060405180910390a26000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611775576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905011801561158957503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115d257838160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b60008054905081101561177257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611760576116a46001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301836003811061169457fe5b01546122a390919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030182600381106116f157fe5b0181905550600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611765565b611772565b8080600101915050611601565b50505b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab65760008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b600080549050811015611ab357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611aa157600061187d6103e861186f6000858154811061185557fe5b90600052602060002001543461221d90919063ffffffff16565b61232b90919063ffffffff16565b90506118d481600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601546122a390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555061196f81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546122a390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506119ca816002546122a390919063ffffffff16565b600281905550813373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd41f7e766eebcc7ff42b11ac8691bdf864db4afc0c55e71d629d54edce460d98846040518082815260200191505060405180910390a4600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050611aa6565b611ab3565b80806001019150506117fc565b50505b600081600001805490501415611b33574281600101819055507f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8060000160405180606001604052808560ff168152602001348152602001428152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548160ff021916908360ff1602179055506020820151816001015560408201518160020155505050611bcd346001546122a390919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e2418434604051808360ff1660ff1681526020018281526020019250505060405180910390a250505050565b60008181548110611c4257fe5b906000526020600020016000915090505481565b6000806000611c6484611d48565b611c6d85612127565b611c7686612173565b9250925092509193909250565b60025481565b6000611d22600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546123ba90919063ffffffff16565b9050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050811015611e1d57611e0e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611ded57fe5b906000526020600020906003020160010154836122a390919063ffffffff16565b91508080600101915050611d50565b50919050565b68056bc75e2d6310000081565b6201518081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490509050919050565b60008060038360ff1681548110611ebf57fe5b906000526020600020906002020160000154915060038360ff1681548110611ee357fe5b9060005260206000209060020201600101549050915091565b600080600080600080600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000018781548110611f5557fe5b906000526020600020906003020160000160009054906101000a900460ff16955060038660ff1681548110611f8657fe5b9060005260206000209060020201600101549450806000018781548110611fa957fe5b9060005260206000209060030201600101549350806000018781548110611fcc57fe5b9060005260206000209060030201600201549250612076612047620151806003846000018b81548110611ffb57fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff168154811061202757fe5b90600052602060002090600202016000015461221d90919063ffffffff16565b82600001898154811061205657fe5b9060005260206000209060030201600201546122a390919063ffffffff16565b9150509295509295909350565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b670b1a2bc2ec50000081565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016001600381106121c357fe5b0154600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006003811061221357fe5b0154019050919050565b600080831415612230576000905061229d565b600082840290508284828161224157fe5b0414612298576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124666021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008082116123a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b60008284816123ad57fe5b0490508091505092915050565b600082821115612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b604051806060016040528060039060208202803883398082019150509050509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72305820fbec97f9fafe03f5c6d9433162078a779f87223b144a102325f35c0ca312827064736f6c634300050a0032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x40 MLOAD DUP1 PUSH1 0xA0 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x32 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x28 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x1E PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x14 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0xA PUSH1 0xFF AND DUP2 MSTORE POP PUSH1 0x0 SWAP1 PUSH1 0x5 PUSH3 0x51 SWAP3 SWAP2 SWAP1 PUSH3 0x1C3 JUMP JUMPDEST POP CALLVALUE DUP1 ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x270D CODESIZE SUB DUP1 PUSH3 0x270D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH3 0x85 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH3 0xA7 DUP2 PUSH3 0x1B0 PUSH1 0x20 SHL PUSH1 0x20 SHR JUMP JUMPDEST ISZERO PUSH3 0xB2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 PUSH1 0x5 PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0xF DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x78 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP POP PUSH1 0x3 PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x64 DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD SSTORE PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE POP POP POP POP PUSH3 0x242 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 EXTCODESIZE SWAP1 POP PUSH1 0x0 DUP2 GT SWAP2 POP POP SWAP2 SWAP1 POP JUMP JUMPDEST DUP3 DUP1 SLOAD DUP3 DUP3 SSTORE SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 DUP2 ADD SWAP3 DUP3 ISZERO PUSH3 0x207 JUMPI SWAP2 PUSH1 0x20 MUL DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x206 JUMPI DUP3 MLOAD DUP3 SWAP1 PUSH1 0xFF AND SWAP1 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x1E4 JUMP JUMPDEST JUMPDEST POP SWAP1 POP PUSH3 0x216 SWAP2 SWAP1 PUSH3 0x21A JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST PUSH3 0x23F SWAP2 SWAP1 JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x23B JUMPI PUSH1 0x0 DUP2 PUSH1 0x0 SWAP1 SSTORE POP PUSH1 0x1 ADD PUSH3 0x221 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST SWAP1 JUMP JUMPDEST PUSH2 0x24BB DUP1 PUSH3 0x252 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69B11DD5 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA8AEB6C2 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE262113E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE262113E EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0xE85ABE09 EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xFB4CB32B EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0xFBFCB279 EQ PUSH2 0xA92 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xA8AEB6C2 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xAECAA634 EQ PUSH2 0x84E JUMPI DUP1 PUSH4 0xC0806B03 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xD7FFCA91 EQ PUSH2 0x938 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x7E3ABEEA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7E3ABEEA EQ PUSH2 0x6D7 JUMPI DUP1 PUSH4 0x852AA16B EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0x950D91E9 EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0x97C0262A EQ PUSH2 0x792 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x69B11DD5 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x6BB18556 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0x6AC JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x48C37203 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x5216AEEC GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x5216AEEC EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0x581C5AE6 EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0x600D20CE EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x6386C1C7 EQ PUSH2 0x5A9 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x48C37203 EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0x48D44BD1 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x4CE87053 EQ PUSH2 0x4AC JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x153AB9DF GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x153AB9DF EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x32BC298C EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x36144C9A EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x405 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C234A8 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x3A93C0C EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x40A772E EQ PUSH2 0x27F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x241 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xAFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x3 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x251 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35E PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41A PUSH2 0xEA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x128F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x496 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C1 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x12F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x593 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x631 PUSH2 0x1C83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x696 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C89 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C1 PUSH2 0x1D29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x726 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x751 PUSH2 0x1E23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77C PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7A7 PUSH2 0x1E37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x838 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x900 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1EFC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x987 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2083 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9B2 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA17 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA7C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0xB05 PUSH2 0x2443 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x3 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x3 DUP1 ISZERO PUSH2 0xB7E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0xB6A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0xDFB JUMPI PUSH1 0x0 PUSH2 0xC7D PUSH2 0xC4E PUSH3 0x15180 PUSH1 0x3 DUP8 PUSH1 0x0 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xC02 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0xC2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xC5D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP5 PUSH1 0x1 ADD SLOAD LT ISZERO PUSH2 0xDED JUMPI PUSH1 0x0 PUSH2 0xD22 PUSH2 0x3E8 PUSH2 0xD14 PUSH1 0x3 DUP9 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xCA7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0xCD3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD DUP9 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x0 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xD3A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0xD5B JUMPI DUP6 PUSH1 0x1 ADD SLOAD PUSH2 0xD7D JUMP JUMPDEST DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xD6A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 TIMESTAMP DUP5 LT PUSH2 0xD8E JUMPI TIMESTAMP PUSH2 0xD90 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xDE9 JUMPI PUSH2 0xDE6 PUSH2 0xDD7 PUSH3 0x15180 PUSH2 0xDC9 PUSH2 0xDBA DUP7 DUP7 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP JUMPDEST POP POP POP JUMPDEST POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xBD6 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE2B PUSH2 0xE14 DUP4 PUSH2 0xB8A JUMP JUMPDEST PUSH2 0xE1D DUP5 PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xEF3 CALLER PUSH2 0xB8A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF00 CALLER PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF2B JUMPI PUSH1 0x0 DUP4 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0xF28 DUP2 DUP4 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xFA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x5573657220686173206E6F206469766964656E64730000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFB7 PUSH1 0xA DUP5 PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1021 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2899DC8C12DEF1CAA9ACCB64257CF2FD9F960F21BB27A560A757EAE3C2EC43C1 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10D6 JUMPI PUSH2 0x10A7 DUP2 DUP6 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x10CA DUP6 PUSH1 0x6 ADD SLOAD DUP7 PUSH1 0x7 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP DUP1 SWAP4 POP JUMPDEST TIMESTAMP PUSH2 0x10F1 PUSH3 0x15180 DUP8 PUSH1 0x1 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x10FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP5 GT ISZERO PUSH2 0x113E JUMPI PUSH2 0x1129 PUSH9 0x56BC75E2D63100000 DUP6 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH9 0x56BC75E2D63100000 SWAP4 POP JUMPDEST TIMESTAMP DUP6 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x1184 PUSH2 0x1171 PUSH1 0x5 PUSH2 0x1163 PUSH1 0x4 DUP9 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 PUSH1 0x8 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x11C7 PUSH2 0x11B6 PUSH1 0x5 PUSH2 0x11A8 PUSH1 0x1 DUP9 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH2 0x120E PUSH1 0x5 PUSH2 0x1200 PUSH1 0x4 DUP10 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1239 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x64 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH8 0xB1A2BC2EC500000 CALLVALUE LT ISZERO PUSH2 0x130C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP DUP2 PUSH1 0xFF AND LT PUSH2 0x1389 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C696420706C616E0000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13B3 PUSH2 0x3E8 PUSH2 0x13A5 PUSH1 0x64 CALLVALUE PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x141D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2899DC8C12DEF1CAA9ACCB64257CF2FD9F960F21BB27A560A757EAE3C2EC43C1 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1775 JUMPI PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP GT DUP1 ISZERO PUSH2 0x1589 JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x15D2 JUMPI DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1760 JUMPI PUSH2 0x16A4 PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP4 PUSH1 0x3 DUP2 LT PUSH2 0x1694 JUMPI INVALID JUMPDEST ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP3 PUSH1 0x3 DUP2 LT PUSH2 0x16F1 JUMPI INVALID JUMPDEST ADD DUP2 SWAP1 SSTORE POP PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x1765 JUMP JUMPDEST PUSH2 0x1772 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1601 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AB6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1AB3 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AA1 JUMPI PUSH1 0x0 PUSH2 0x187D PUSH2 0x3E8 PUSH2 0x186F PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1855 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD CALLVALUE PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x18D4 DUP2 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x196F DUP2 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x19CA DUP2 PUSH1 0x2 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD41F7E766EEBCC7FF42B11AC8691BDF864DB4AFC0C55E71D629D54EDCE460D98 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP POP PUSH2 0x1AA6 JUMP JUMPDEST PUSH2 0x1AB3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x17FC JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP EQ ISZERO PUSH2 0x1B33 JUMPI TIMESTAMP DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH32 0x9FD565CD14C3C391679EB0CAD12A14DCF7534E9D3462BCB9B67A098A9BBBC24A CALLER PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST DUP1 PUSH1 0x0 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE POP POP POP PUSH2 0x1BCD CALLVALUE PUSH1 0x1 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3A89EB89956DCF6537585A2372D4E629E18622CCE06C2B4FEE6301AE0840E241 DUP5 CALLVALUE PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C42 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C64 DUP5 PUSH2 0x1D48 JUMP JUMPDEST PUSH2 0x1C6D DUP6 PUSH2 0x2127 JUMP JUMPDEST PUSH2 0x1C76 DUP7 PUSH2 0x2173 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D22 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1E1D JUMPI PUSH2 0x1E0E PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1DED JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1D50 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1EBF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP2 POP PUSH1 0x3 DUP4 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1EE3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x4 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1F55 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP PUSH1 0x3 DUP7 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1F86 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP5 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1FA9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP4 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1FCC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x2076 PUSH2 0x2047 PUSH3 0x15180 PUSH1 0x3 DUP5 PUSH1 0x0 ADD DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x1FFB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x2027 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x2056 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH8 0xB1A2BC2EC500000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x21C3 JUMPI INVALID JUMPDEST ADD SLOAD PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0x2213 JUMPI INVALID JUMPDEST ADD SLOAD ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x2230 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x229D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x2241 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2298 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2466 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x2321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x23A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x23AD JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2432 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4d PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72305820 0xfb 0xec SWAP8 0xf9 STATICCALL INVALID SUB CREATE2 0xc6 0xd9 NUMBER BALANCE PUSH3 0x78A77 SWAP16 DUP8 0x22 EXTCODESIZE EQ 0x4a LT 0x23 0x25 RETURN 0x5c 0xc LOG3 SLT DUP3 PUSH17 0x64736F6C634300050A0032000000000000 ",
"sourceMap": "58:7932:0:-;;;176:57;;;;;;;;214:2;176:57;;;;;;218:2;176:57;;;;;;222:2;176:57;;;;;;226:2;176:57;;;;;;230:2;176:57;;;;;;;;;;;;;:::i;:::-;;1342:239;8:9:-1;5:2;;;30:1;27;20:12;5:2;1342:239:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1342:239:0;;;;;;;;;;;;;;;;1398:18;1409:6;1398:10;;;:18;;:::i;:::-;1397:19;1389:28;;;;;;1440:6;1421:16;;:25;;;;;;;;;;;;;;;;;;1459:5;1470:13;;;;;;;;1475:2;1470:13;;;;1479:3;1470:13;;;1459:25;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1459:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1523:5;1534:13;;;;;;;;1539:2;1534:13;;;;1543:3;1534:13;;;1523:25;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1523:25:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1342:239;58:7932;;7827:161;7884:4;7900:9;7950:4;7938:17;7930:25;;7980:1;7973:4;:8;7966:15;;;7827:161;;;:::o;58:7932::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;"
},
"deployedBytecode": {
"linkReferences": {},
"object": "6080604052600436106101c25760003560e01c806369b11dd5116100f7578063a8aeb6c211610095578063e262113e11610064578063e262113e1461099d578063e85abe09146109c8578063fb4cb32b14610a2d578063fbfcb27914610a92576101c2565b8063a8aeb6c2146107e9578063aecaa6341461084e578063c0806b03146108a7578063d7ffca9114610938576101c2565b80637e3abeea116100d15780637e3abeea146106d7578063852aa16b1461073c578063950d91e91461076757806397c0262a14610792576101c2565b806369b11dd51461061c5780636bb18556146106475780636f9fb98a146106ac576101c2565b806348c37203116101645780635216aeec1161013e5780635216aeec146104de578063581c5ae614610509578063600d20ce1461055a5780636386c1c7146105a9576101c2565b806348c372031461041c57806348d44bd1146104815780634ce87053146104ac576101c2565b8063153ab9df116101a0578063153ab9df146102e457806332bc298c1461034957806336144c9a146103745780633ccfd60b14610405576101c2565b806301c234a8146101c757806303a93c0c146101f2578063040a772e1461027f575b600080fd5b3480156101d357600080fd5b506101dc610af7565b6040518082815260200191505060405180910390f35b3480156101fe57600080fd5b506102416004803603602081101561021557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610afd565b6040518082600360200280838360005b8381101561026c578082015181840152602081019050610251565b5050505090500191505060405180910390f35b34801561028b57600080fd5b506102ce600480360360208110156102a257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b8a565b6040518082815260200191505060405180910390f35b3480156102f057600080fd5b506103336004803603602081101561030757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e06565b6040518082815260200191505060405180910390f35b34801561035557600080fd5b5061035e610e32565b6040518082815260200191505060405180910390f35b34801561038057600080fd5b506103c36004803603602081101561039757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e39565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561041157600080fd5b5061041a610ea5565b005b34801561042857600080fd5b5061046b6004803603602081101561043f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061128f565b6040518082815260200191505060405180910390f35b34801561048d57600080fd5b506104966112db565b6040518082815260200191505060405180910390f35b3480156104b857600080fd5b506104c16112e0565b604051808381526020018281526020019250505060405180910390f35b3480156104ea57600080fd5b506104f36112f1565b6040518082815260200191505060405180910390f35b6105586004803603604081101561051f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112f7565b005b34801561056657600080fd5b506105936004803603602081101561057d57600080fd5b8101908080359060200190929190505050611c35565b6040518082815260200191505060405180910390f35b3480156105b557600080fd5b506105f8600480360360208110156105cc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c56565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561062857600080fd5b50610631611c83565b6040518082815260200191505060405180910390f35b34801561065357600080fd5b506106966004803603602081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c89565b6040518082815260200191505060405180910390f35b3480156106b857600080fd5b506106c1611d29565b6040518082815260200191505060405180910390f35b3480156106e357600080fd5b50610726600480360360208110156106fa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d48565b6040518082815260200191505060405180910390f35b34801561074857600080fd5b50610751611e23565b6040518082815260200191505060405180910390f35b34801561077357600080fd5b5061077c611e30565b6040518082815260200191505060405180910390f35b34801561079e57600080fd5b506107a7611e37565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107f557600080fd5b506108386004803603602081101561080c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e5d565b6040518082815260200191505060405180910390f35b34801561085a57600080fd5b5061088a6004803603602081101561087157600080fd5b81019080803560ff169060200190929190505050611eac565b604051808381526020018281526020019250505060405180910390f35b3480156108b357600080fd5b50610900600480360360408110156108ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611efc565b604051808660ff1660ff1681526020018581526020018481526020018381526020018281526020019550505050505060405180910390f35b34801561094457600080fd5b506109876004803603602081101561095b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612083565b6040518082815260200191505060405180910390f35b3480156109a957600080fd5b506109b26120cf565b6040518082815260200191505060405180910390f35b3480156109d457600080fd5b50610a17600480360360208110156109eb57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120db565b6040518082815260200191505060405180910390f35b348015610a3957600080fd5b50610a7c60048036036020811015610a5057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612127565b6040518082815260200191505060405180910390f35b348015610a9e57600080fd5b50610ae160048036036020811015610ab557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612173565b6040518082815260200191505060405180910390f35b6103e881565b610b05612443565b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301600380602002604051908101604052809291908260038015610b7e576020028201915b815481526020019060010190808311610b6a575b50505050509050919050565b600080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600080600090505b8260000180549050811015610dfb576000610c7d610c4e620151806003876000018681548110610c0257fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff1681548110610c2e57fe5b90600052602060002090600202016000015461221d90919063ffffffff16565b856000018481548110610c5d57fe5b9060005260206000209060030201600201546122a390919063ffffffff16565b90508084600101541015610ded576000610d226103e8610d146003886000018781548110610ca757fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff1681548110610cd357fe5b906000526020600020906002020160010154886000018781548110610cf457fe5b90600052602060002090600302016001015461221d90919063ffffffff16565b61232b90919063ffffffff16565b905060008560010154866000018581548110610d3a57fe5b90600052602060002090600302016002015411610d5b578560010154610d7d565b856000018481548110610d6a57fe5b9060005260206000209060030201600201545b90506000428410610d8e5742610d90565b835b905080821015610de957610de6610dd762015180610dc9610dba86866123ba90919063ffffffff16565b8761221d90919063ffffffff16565b61232b90919063ffffffff16565b876122a390919063ffffffff16565b95505b5050505b508080600101915050610bd6565b508092505050919050565b6000610e2b610e1483610b8a565b610e1d846120db565b6122a390919063ffffffff16565b9050919050565b6201518081565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000610ef333610b8a565b90506000610f00336120db565b90506000811115610f2b5760008360060181905550610f2881836122a390919063ffffffff16565b91505b60008211610fa1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f5573657220686173206e6f206469766964656e6473000000000000000000000081525060200191505060405180910390fd5b6000610fb7600a8461232b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611021573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1826040518082815260200191505060405180910390a260003073ffffffffffffffffffffffffffffffffffffffff16319050838110156110d6576110a781856123ba90919063ffffffff16565b85600601819055506110ca856006015486600701546122a390919063ffffffff16565b85600701819055508093505b426110f16201518087600101546122a390919063ffffffff16565b11156110fc57600080fd5b68056bc75e2d6310000084111561113e5761112968056bc75e2d63100000856123ba90919063ffffffff16565b856006018190555068056bc75e2d6310000093505b428560010181905550611184611171600561116360048861221d90919063ffffffff16565b61232b90919063ffffffff16565b86600801546122a390919063ffffffff16565b85600801819055506111c76111b660056111a860018861221d90919063ffffffff16565b61232b90919063ffffffff16565b6001546122a390919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff166108fc61120e600561120060048961221d90919063ffffffff16565b61232b90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611239573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5856040518082815260200191505060405180910390a25050505050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701549050919050565b606481565b600080600154600254915091509091565b60015481565b670b1a2bc2ec50000034101561130c57600080fd5b6003805490508160ff1610611389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f496e76616c696420706c616e000000000000000000000000000000000000000081525060200191505060405180910390fd5b60006113b36103e86113a560643461221d90919063ffffffff16565b61232b90919063ffffffff16565b9050600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561141d573d6000803e3d6000fd5b503373ffffffffffffffffffffffffffffffffffffffff167f2899dc8c12def1caa9accb64257cf2fd9f960f21bb27a560a757eae3c2ec43c1826040518082815260200191505060405180910390a26000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415611775576000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018054905011801561158957503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156115d257838160020160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b60008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b60008054905081101561177257600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611760576116a46001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301836003811061169457fe5b01546122a390919063ffffffff16565b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030182600381106116f157fe5b0181905550600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169150611765565b611772565b8080600101915050611601565b50505b600073ffffffffffffffffffffffffffffffffffffffff168160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ab65760008160020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008090505b600080549050811015611ab357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611aa157600061187d6103e861186f6000858154811061185557fe5b90600052602060002001543461221d90919063ffffffff16565b61232b90919063ffffffff16565b90506118d481600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601546122a390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555061196f81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546122a390919063ffffffff16565b600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055506119ca816002546122a390919063ffffffff16565b600281905550813373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fd41f7e766eebcc7ff42b11ac8691bdf864db4afc0c55e71d629d54edce460d98846040518082815260200191505060405180910390a4600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16925050611aa6565b611ab3565b80806001019150506117fc565b50505b600081600001805490501415611b33574281600101819055507f9fd565cd14c3c391679eb0cad12a14dcf7534e9d3462bcb9b67a098a9bbbc24a33604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b8060000160405180606001604052808560ff168152602001348152602001428152509080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548160ff021916908360ff1602179055506020820151816001015560408201518160020155505050611bcd346001546122a390919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167f3a89eb89956dcf6537585a2372d4e629e18622cce06c2b4fee6301ae0840e2418434604051808360ff1660ff1681526020018281526020019250505060405180910390a250505050565b60008181548110611c4257fe5b906000526020600020016000915090505481565b6000806000611c6484611d48565b611c6d85612127565b611c7686612173565b9250925092509193909250565b60025481565b6000611d22600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546123ba90919063ffffffff16565b9050919050565b60003073ffffffffffffffffffffffffffffffffffffffff1631905090565b600080600090505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000180549050811015611e1d57611e0e600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018281548110611ded57fe5b906000526020600020906003020160010154836122a390919063ffffffff16565b91508080600101915050611d50565b50919050565b68056bc75e2d6310000081565b6201518081565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001805490509050919050565b60008060038360ff1681548110611ebf57fe5b906000526020600020906002020160000154915060038360ff1681548110611ee357fe5b9060005260206000209060020201600101549050915091565b600080600080600080600460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806000018781548110611f5557fe5b906000526020600020906003020160000160009054906101000a900460ff16955060038660ff1681548110611f8657fe5b9060005260206000209060020201600101549450806000018781548110611fa957fe5b9060005260206000209060030201600101549350806000018781548110611fcc57fe5b9060005260206000209060030201600201549250612076612047620151806003846000018b81548110611ffb57fe5b906000526020600020906003020160000160009054906101000a900460ff1660ff168154811061202757fe5b90600052602060002090600202016000015461221d90919063ffffffff16565b82600001898154811061205657fe5b9060005260206000209060030201600201546122a390919063ffffffff16565b9150509295509295909350565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101549050919050565b670b1a2bc2ec50000081565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600801549050919050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003016001600381106121c357fe5b0154600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030160006003811061221357fe5b0154019050919050565b600080831415612230576000905061229d565b600082840290508284828161224157fe5b0414612298576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806124666021913960400191505060405180910390fd5b809150505b92915050565b600080828401905083811015612321576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b60008082116123a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b60008284816123ad57fe5b0490508091505092915050565b600082821115612432576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b600082840390508091505092915050565b604051806060016040528060039060208202803883398082019150509050509056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72305820fbec97f9fafe03f5c6d9433162078a779f87223b144a102325f35c0ca312827064736f6c634300050a0032",
"opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1C2 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x69B11DD5 GT PUSH2 0xF7 JUMPI DUP1 PUSH4 0xA8AEB6C2 GT PUSH2 0x95 JUMPI DUP1 PUSH4 0xE262113E GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xE262113E EQ PUSH2 0x99D JUMPI DUP1 PUSH4 0xE85ABE09 EQ PUSH2 0x9C8 JUMPI DUP1 PUSH4 0xFB4CB32B EQ PUSH2 0xA2D JUMPI DUP1 PUSH4 0xFBFCB279 EQ PUSH2 0xA92 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0xA8AEB6C2 EQ PUSH2 0x7E9 JUMPI DUP1 PUSH4 0xAECAA634 EQ PUSH2 0x84E JUMPI DUP1 PUSH4 0xC0806B03 EQ PUSH2 0x8A7 JUMPI DUP1 PUSH4 0xD7FFCA91 EQ PUSH2 0x938 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x7E3ABEEA GT PUSH2 0xD1 JUMPI DUP1 PUSH4 0x7E3ABEEA EQ PUSH2 0x6D7 JUMPI DUP1 PUSH4 0x852AA16B EQ PUSH2 0x73C JUMPI DUP1 PUSH4 0x950D91E9 EQ PUSH2 0x767 JUMPI DUP1 PUSH4 0x97C0262A EQ PUSH2 0x792 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x69B11DD5 EQ PUSH2 0x61C JUMPI DUP1 PUSH4 0x6BB18556 EQ PUSH2 0x647 JUMPI DUP1 PUSH4 0x6F9FB98A EQ PUSH2 0x6AC JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x48C37203 GT PUSH2 0x164 JUMPI DUP1 PUSH4 0x5216AEEC GT PUSH2 0x13E JUMPI DUP1 PUSH4 0x5216AEEC EQ PUSH2 0x4DE JUMPI DUP1 PUSH4 0x581C5AE6 EQ PUSH2 0x509 JUMPI DUP1 PUSH4 0x600D20CE EQ PUSH2 0x55A JUMPI DUP1 PUSH4 0x6386C1C7 EQ PUSH2 0x5A9 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x48C37203 EQ PUSH2 0x41C JUMPI DUP1 PUSH4 0x48D44BD1 EQ PUSH2 0x481 JUMPI DUP1 PUSH4 0x4CE87053 EQ PUSH2 0x4AC JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x153AB9DF GT PUSH2 0x1A0 JUMPI DUP1 PUSH4 0x153AB9DF EQ PUSH2 0x2E4 JUMPI DUP1 PUSH4 0x32BC298C EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x36144C9A EQ PUSH2 0x374 JUMPI DUP1 PUSH4 0x3CCFD60B EQ PUSH2 0x405 JUMPI PUSH2 0x1C2 JUMP JUMPDEST DUP1 PUSH4 0x1C234A8 EQ PUSH2 0x1C7 JUMPI DUP1 PUSH4 0x3A93C0C EQ PUSH2 0x1F2 JUMPI DUP1 PUSH4 0x40A772E EQ PUSH2 0x27F JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1DC PUSH2 0xAF7 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x241 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x215 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xAFD JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH1 0x3 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x26C JUMPI DUP1 DUP3 ADD MLOAD DUP2 DUP5 ADD MSTORE PUSH1 0x20 DUP2 ADD SWAP1 POP PUSH2 0x251 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2CE PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2A2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xB8A JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2F0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x333 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x307 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xE06 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x355 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x35E PUSH2 0xE32 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x380 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x3C3 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x397 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0xE39 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x411 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x41A PUSH2 0xEA5 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x428 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x46B PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x43F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x128F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x48D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x496 PUSH2 0x12DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4C1 PUSH2 0x12E0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x4F3 PUSH2 0x12F1 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x558 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x51F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x12F7 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x566 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x593 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x57D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C35 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x5B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x5F8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C56 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP4 POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x628 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x631 PUSH2 0x1C83 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x653 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x696 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x66A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1C89 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6B8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x6C1 PUSH2 0x1D29 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x6E3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x726 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x6FA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1D48 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x748 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x751 PUSH2 0x1E23 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x773 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x77C PUSH2 0x1E30 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x79E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x7A7 PUSH2 0x1E37 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x7F5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x838 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x80C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1E5D JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x85A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x88A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x871 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH1 0xFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1EAC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8B3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x900 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x8CA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x1EFC JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP7 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP6 DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP6 POP POP POP POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x944 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x987 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x95B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2083 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9A9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x9B2 PUSH2 0x20CF JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x9D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA17 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x9EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x20DB JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA39 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xA7C PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xA50 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2127 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xA9E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xAE1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xAB5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH2 0x2173 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH2 0xB05 PUSH2 0x2443 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x3 DUP1 PUSH1 0x20 MUL PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP3 SWAP2 SWAP1 DUP3 PUSH1 0x3 DUP1 ISZERO PUSH2 0xB7E JUMPI PUSH1 0x20 MUL DUP3 ADD SWAP2 JUMPDEST DUP2 SLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP1 PUSH1 0x1 ADD SWAP1 DUP1 DUP4 GT PUSH2 0xB6A JUMPI JUMPDEST POP POP POP POP POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST DUP3 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0xDFB JUMPI PUSH1 0x0 PUSH2 0xC7D PUSH2 0xC4E PUSH3 0x15180 PUSH1 0x3 DUP8 PUSH1 0x0 ADD DUP7 DUP2 SLOAD DUP2 LT PUSH2 0xC02 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0xC2E JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xC5D JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP5 PUSH1 0x1 ADD SLOAD LT ISZERO PUSH2 0xDED JUMPI PUSH1 0x0 PUSH2 0xD22 PUSH2 0x3E8 PUSH2 0xD14 PUSH1 0x3 DUP9 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xCA7 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0xCD3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD DUP9 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0xCF4 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP6 PUSH1 0x1 ADD SLOAD DUP7 PUSH1 0x0 ADD DUP6 DUP2 SLOAD DUP2 LT PUSH2 0xD3A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD GT PUSH2 0xD5B JUMPI DUP6 PUSH1 0x1 ADD SLOAD PUSH2 0xD7D JUMP JUMPDEST DUP6 PUSH1 0x0 ADD DUP5 DUP2 SLOAD DUP2 LT PUSH2 0xD6A JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD JUMPDEST SWAP1 POP PUSH1 0x0 TIMESTAMP DUP5 LT PUSH2 0xD8E JUMPI TIMESTAMP PUSH2 0xD90 JUMP JUMPDEST DUP4 JUMPDEST SWAP1 POP DUP1 DUP3 LT ISZERO PUSH2 0xDE9 JUMPI PUSH2 0xDE6 PUSH2 0xDD7 PUSH3 0x15180 PUSH2 0xDC9 PUSH2 0xDBA DUP7 DUP7 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP8 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP6 POP JUMPDEST POP POP POP JUMPDEST POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0xBD6 JUMP JUMPDEST POP DUP1 SWAP3 POP POP POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0xE2B PUSH2 0xE14 DUP4 PUSH2 0xB8A JUMP JUMPDEST PUSH2 0xE1D DUP5 PUSH2 0x20DB JUMP JUMPDEST PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH2 0xEF3 CALLER PUSH2 0xB8A JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xF00 CALLER PUSH2 0x20DB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 GT ISZERO PUSH2 0xF2B JUMPI PUSH1 0x0 DUP4 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0xF28 DUP2 DUP4 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP JUMPDEST PUSH1 0x0 DUP3 GT PUSH2 0xFA1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x15 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x5573657220686173206E6F206469766964656E64730000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xFB7 PUSH1 0xA DUP5 PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1021 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2899DC8C12DEF1CAA9ACCB64257CF2FD9F960F21BB27A560A757EAE3C2EC43C1 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x10D6 JUMPI PUSH2 0x10A7 DUP2 DUP6 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x10CA DUP6 PUSH1 0x6 ADD SLOAD DUP7 PUSH1 0x7 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP DUP1 SWAP4 POP JUMPDEST TIMESTAMP PUSH2 0x10F1 PUSH3 0x15180 DUP8 PUSH1 0x1 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST GT ISZERO PUSH2 0x10FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH9 0x56BC75E2D63100000 DUP5 GT ISZERO PUSH2 0x113E JUMPI PUSH2 0x1129 PUSH9 0x56BC75E2D63100000 DUP6 PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH9 0x56BC75E2D63100000 SWAP4 POP JUMPDEST TIMESTAMP DUP6 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x1184 PUSH2 0x1171 PUSH1 0x5 PUSH2 0x1163 PUSH1 0x4 DUP9 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP7 PUSH1 0x8 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP6 PUSH1 0x8 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x11C7 PUSH2 0x11B6 PUSH1 0x5 PUSH2 0x11A8 PUSH1 0x1 DUP9 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC PUSH2 0x120E PUSH1 0x5 PUSH2 0x1200 PUSH1 0x4 DUP10 PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x1239 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x7084F5476618D8E60B11EF0D7D3F06914655ADB8793E28FF7F018D4C76D505D5 DUP6 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x64 DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x1 SLOAD PUSH1 0x2 SLOAD SWAP2 POP SWAP2 POP SWAP1 SWAP2 JUMP JUMPDEST PUSH1 0x1 SLOAD DUP2 JUMP JUMPDEST PUSH8 0xB1A2BC2EC500000 CALLVALUE LT ISZERO PUSH2 0x130C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x3 DUP1 SLOAD SWAP1 POP DUP2 PUSH1 0xFF AND LT PUSH2 0x1389 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0xC DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x496E76616C696420706C616E0000000000000000000000000000000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0x13B3 PUSH2 0x3E8 PUSH2 0x13A5 PUSH1 0x64 CALLVALUE PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x8FC DUP3 SWAP1 DUP2 ISZERO MUL SWAP1 PUSH1 0x40 MLOAD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x141D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x2899DC8C12DEF1CAA9ACCB64257CF2FD9F960F21BB27A560A757EAE3C2EC43C1 DUP3 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x1775 JUMPI PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP GT DUP1 ISZERO PUSH2 0x1589 JUMPI POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST ISZERO PUSH2 0x15D2 JUMPI DUP4 DUP2 PUSH1 0x2 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF MUL NOT AND SWAP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND MUL OR SWAP1 SSTORE POP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1772 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1760 JUMPI PUSH2 0x16A4 PUSH1 0x1 PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP4 PUSH1 0x3 DUP2 LT PUSH2 0x1694 JUMPI INVALID JUMPDEST ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD DUP3 PUSH1 0x3 DUP2 LT PUSH2 0x16F1 JUMPI INVALID JUMPDEST ADD DUP2 SWAP1 SSTORE POP PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x1765 JUMP JUMPDEST PUSH2 0x1772 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1601 JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AB6 JUMPI PUSH1 0x0 DUP2 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP PUSH1 0x0 DUP1 SWAP1 POP JUMPDEST PUSH1 0x0 DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1AB3 JUMPI PUSH1 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1AA1 JUMPI PUSH1 0x0 PUSH2 0x187D PUSH2 0x3E8 PUSH2 0x186F PUSH1 0x0 DUP6 DUP2 SLOAD DUP2 LT PUSH2 0x1855 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD SLOAD CALLVALUE PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH2 0x232B SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP PUSH2 0x18D4 DUP2 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x196F DUP2 PUSH1 0x4 PUSH1 0x0 DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD DUP2 SWAP1 SSTORE POP PUSH2 0x19CA DUP2 PUSH1 0x2 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x2 DUP2 SWAP1 SSTORE POP DUP2 CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xD41F7E766EEBCC7FF42B11AC8691BDF864DB4AFC0C55E71D629D54EDCE460D98 DUP5 PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG4 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x2 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP3 POP POP PUSH2 0x1AA6 JUMP JUMPDEST PUSH2 0x1AB3 JUMP JUMPDEST DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x17FC JUMP JUMPDEST POP POP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP EQ ISZERO PUSH2 0x1B33 JUMPI TIMESTAMP DUP2 PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP PUSH32 0x9FD565CD14C3C391679EB0CAD12A14DCF7534E9D3462BCB9B67A098A9BBBC24A CALLER PUSH1 0x40 MLOAD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 JUMPDEST DUP1 PUSH1 0x0 ADD PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 DUP6 PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD CALLVALUE DUP2 MSTORE PUSH1 0x20 ADD TIMESTAMP DUP2 MSTORE POP SWAP1 DUP1 PUSH1 0x1 DUP2 SLOAD ADD DUP1 DUP3 SSTORE DUP1 SWAP2 POP POP SWAP1 PUSH1 0x1 DUP3 SUB SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 SWAP1 SWAP2 SWAP3 SWAP1 SWAP2 SWAP1 SWAP2 POP PUSH1 0x0 DUP3 ADD MLOAD DUP2 PUSH1 0x0 ADD PUSH1 0x0 PUSH2 0x100 EXP DUP2 SLOAD DUP2 PUSH1 0xFF MUL NOT AND SWAP1 DUP4 PUSH1 0xFF AND MUL OR SWAP1 SSTORE POP PUSH1 0x20 DUP3 ADD MLOAD DUP2 PUSH1 0x1 ADD SSTORE PUSH1 0x40 DUP3 ADD MLOAD DUP2 PUSH1 0x2 ADD SSTORE POP POP POP PUSH2 0x1BCD CALLVALUE PUSH1 0x1 SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x1 DUP2 SWAP1 SSTORE POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x3A89EB89956DCF6537585A2372D4E629E18622CCE06C2B4FEE6301AE0840E241 DUP5 CALLVALUE PUSH1 0x40 MLOAD DUP1 DUP4 PUSH1 0xFF AND PUSH1 0xFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG2 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x1C42 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 ADD PUSH1 0x0 SWAP2 POP SWAP1 POP SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x1C64 DUP5 PUSH2 0x1D48 JUMP JUMPDEST PUSH2 0x1C6D DUP6 PUSH2 0x2127 JUMP JUMPDEST PUSH2 0x1C76 DUP7 PUSH2 0x2173 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP SWAP2 SWAP4 SWAP1 SWAP3 POP JUMP JUMPDEST PUSH1 0x2 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1D22 PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x7 ADD SLOAD PUSH2 0x23BA SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 ADDRESS PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND BALANCE SWAP1 POP SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 SWAP1 POP JUMPDEST PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP DUP2 LT ISZERO PUSH2 0x1E1D JUMPI PUSH2 0x1E0E PUSH1 0x4 PUSH1 0x0 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP3 DUP2 SLOAD DUP2 LT PUSH2 0x1DED JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD DUP4 PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x1D50 JUMP JUMPDEST POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH9 0x56BC75E2D63100000 DUP2 JUMP JUMPDEST PUSH3 0x15180 DUP2 JUMP JUMPDEST PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x0 ADD DUP1 SLOAD SWAP1 POP SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x3 DUP4 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1EBF JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD SWAP2 POP PUSH1 0x3 DUP4 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1EE3 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x4 PUSH1 0x0 DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 SWAP1 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1F55 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND SWAP6 POP PUSH1 0x3 DUP7 PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x1F86 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x1 ADD SLOAD SWAP5 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1FA9 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x1 ADD SLOAD SWAP4 POP DUP1 PUSH1 0x0 ADD DUP8 DUP2 SLOAD DUP2 LT PUSH2 0x1FCC JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD SWAP3 POP PUSH2 0x2076 PUSH2 0x2047 PUSH3 0x15180 PUSH1 0x3 DUP5 PUSH1 0x0 ADD DUP12 DUP2 SLOAD DUP2 LT PUSH2 0x1FFB JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x0 ADD PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH1 0xFF AND PUSH1 0xFF AND DUP2 SLOAD DUP2 LT PUSH2 0x2027 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x2 MUL ADD PUSH1 0x0 ADD SLOAD PUSH2 0x221D SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST DUP3 PUSH1 0x0 ADD DUP10 DUP2 SLOAD DUP2 LT PUSH2 0x2056 JUMPI INVALID JUMPDEST SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x3 MUL ADD PUSH1 0x2 ADD SLOAD PUSH2 0x22A3 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP2 POP POP SWAP3 SWAP6 POP SWAP3 SWAP6 SWAP1 SWAP4 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x1 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH8 0xB1A2BC2EC500000 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x6 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x8 ADD SLOAD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x4 PUSH1 0x0 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x1 PUSH1 0x3 DUP2 LT PUSH2 0x21C3 JUMPI INVALID JUMPDEST ADD SLOAD PUSH1 0x4 PUSH1 0x0 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 DUP2 MSTORE PUSH1 0x20 ADD PUSH1 0x0 KECCAK256 PUSH1 0x3 ADD PUSH1 0x0 PUSH1 0x3 DUP2 LT PUSH2 0x2213 JUMPI INVALID JUMPDEST ADD SLOAD ADD SWAP1 POP SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 EQ ISZERO PUSH2 0x2230 JUMPI PUSH1 0x0 SWAP1 POP PUSH2 0x229D JUMP JUMPDEST PUSH1 0x0 DUP3 DUP5 MUL SWAP1 POP DUP3 DUP5 DUP3 DUP2 PUSH2 0x2241 JUMPI INVALID JUMPDEST DIV EQ PUSH2 0x2298 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2466 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 ADD SWAP1 POP DUP4 DUP2 LT ISZERO PUSH2 0x2321 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1B DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206164646974696F6E206F766572666C6F770000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 GT PUSH2 0x23A2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1A DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A206469766973696F6E206279207A65726F000000000000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 DUP2 PUSH2 0x23AD JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP3 DUP3 GT ISZERO PUSH2 0x2432 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x1E DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH32 0x536166654D6174683A207375627472616374696F6E206F766572666C6F770000 DUP2 MSTORE POP PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP3 DUP5 SUB SWAP1 POP DUP1 SWAP2 POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x60 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 SWAP1 PUSH1 0x20 DUP3 MUL DUP1 CODESIZE DUP4 CODECOPY DUP1 DUP3 ADD SWAP2 POP POP SWAP1 POP POP SWAP1 JUMP INVALID MSTORE8 PUSH2 0x6665 0x4d PUSH2 0x7468 GASPRICE KECCAK256 PUSH14 0x756C7469706C69636174696F6E20 PUSH16 0x766572666C6F77A265627A7A72305820 0xfb 0xec SWAP8 0xf9 STATICCALL INVALID SUB CREATE2 0xc6 0xd9 NUMBER BALANCE PUSH3 0x78A77 SWAP16 DUP8 0x22 EXTCODESIZE EQ 0x4a LT 0x23 0x25 RETURN 0x5c 0xc LOG3 SLT DUP3 PUSH17 0x64736F6C634300050A0032000000000000 ",
"sourceMap": "58:7932:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;280:47;;8:9:-1;5:2;;;30:1;27;20:12;5:2;280:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5739:142;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5739:142:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5739:142:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5739:142:0;;;;;;;;;;;;;;;;4613:751;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4613:751:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4613:751:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6455:159;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6455:159:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6455:159:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;330:42;;8:9:-1;5:2;;;30:1;27;20:12;5:2;330:42:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5619:117;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5619:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5619:117:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3153:1207;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3153:1207:0;;;:::i;:::-;;6162:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6162:129:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6162:129:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;236:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;236:41:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7436:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7436:132:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;528:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;528:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1584:1566;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1584:1566:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;176:57;;8:9:-1;5:2;;;30:1;27;20:12;5:2;176:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;176:57:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;7571:253;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7571:253:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7571:253:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;559:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;559:28:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6294:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6294:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6294:158:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4363:96;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4363:96:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6752:227;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6752:227:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6752:227:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;405:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:48:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;474:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;474:50:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;976:39;;8:9:-1;5:2;;;30:1;27;20:12;5:2;976:39:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6617:132;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6617:132:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6617:132:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4462:148;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4462:148:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4462:148:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;6982:451;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6982:451:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6982:451:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5495:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5495:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5495:121:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;109:53;;8:9:-1;5:2;;;30:1;27;20:12;5:2;109:53:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;6040:119;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6040:119:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6040:119:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5367:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5367:125:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5367:125:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5884:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5884:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5884:153:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;280:47;323:4;280:47;:::o;5739:142::-;5810:27;;:::i;:::-;5851:5;:18;5857:11;5851:18;;;;;;;;;;;;;;;:25;;5843:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5739:142;;;:::o;4613:751::-;4681:7;4694:17;4714:5;:18;4720:11;4714:18;;;;;;;;;;;;;;;4694:38;;4737:19;4766:9;4778:1;4766:13;;4761:577;4785:4;:13;;:20;;;;4781:1;:24;4761:577;;;4817:14;4834:73;4861:45;4899:6;4861:5;4867:4;:13;;4881:1;4867:16;;;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;4861:28;;;;;;;;;;;;;;;;;;;;:33;;;:37;;:45;;;;:::i;:::-;4834:4;:13;;4848:1;4834:16;;;;;;;;;;;;;;;;;;:22;;;:26;;:73;;;;:::i;:::-;4817:90;;4934:6;4916:4;:15;;;:24;4912:422;;;4948:13;4964:87;323:4;4964:65;4992:5;4998:4;:13;;5012:1;4998:16;;;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;4992:28;;;;;;;;;;;;;;;;;;;;:36;;;4964:4;:13;;4978:1;4964:16;;;;;;;;;;;;;;;;;;:23;;;:27;;:65;;;;:::i;:::-;:69;;:87;;;;:::i;:::-;4948:103;;5057:12;5097:4;:15;;;5072:4;:13;;5086:1;5072:16;;;;;;;;;;;;;;;;;;:22;;;:40;:83;;5140:4;:15;;;5072:83;;;5115:4;:13;;5129:1;5115:16;;;;;;;;;;;;;;;;;;:22;;;5072:83;5057:98;;5161:10;5183:15;5174:6;:24;:51;;5210:15;5174:51;;;5201:6;5174:51;5161:64;;5242:2;5235:4;:9;5231:98;;;5267:55;5283:38;366:6;5283:23;5293:12;5300:4;5293:2;:6;;:12;;;;:::i;:::-;5283:5;:9;;:23;;;;:::i;:::-;:27;;:38;;;;:::i;:::-;5267:11;:15;;:55;;;;:::i;:::-;5253:69;;5231:98;4912:422;;;;4761:577;4807:3;;;;;;;4761:577;;;;5349:11;5342:18;;;;4613:751;;;:::o;6455:159::-;6522:7;6542:68;6580:29;6597:11;6580:16;:29::i;:::-;6542:33;6563:11;6542:20;:33::i;:::-;:37;;:68;;;;:::i;:::-;6535:75;;6455:159;;;:::o;330:42::-;366:6;330:42;:::o;5619:117::-;5685:7;5705:5;:18;5711:11;5705:18;;;;;;;;;;;;;;;:27;;;;;;;;;;;;5698:34;;5619:117;;;:::o;3153:1207::-;3184:17;3204:5;:17;3210:10;3204:17;;;;;;;;;;;;;;;3184:37;;3226:19;3248:28;3265:10;3248:16;:28::i;:::-;3226:50;;3281:21;3305:32;3326:10;3305:20;:32::i;:::-;3281:56;;3361:1;3345:13;:17;3341:96;;;3382:1;3369:4;:10;;:14;;;;3402:30;3418:13;3402:11;:15;;:30;;;;:::i;:::-;3388:44;;3341:96;3465:1;3451:11;:15;3443:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3497:11;3511:19;3527:2;3511:11;:15;;:19;;;;:::i;:::-;3497:33;;3535:16;;;;;;;;;;;:25;;:30;3561:3;3535:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3535:30:0;3583:10;3574:25;;;3595:3;3574:25;;;;;;;;;;;;;;;;;;3604:23;3638:4;3630:21;;;3604:47;;3677:11;3659:15;:29;3655:178;;;3708:32;3724:15;3708:11;:15;;:32;;;;:::i;:::-;3695:4;:10;;:45;;;;3763:31;3783:4;:10;;;3763:4;:15;;;:19;;:31;;;;:::i;:::-;3745:4;:15;;:49;;;;3813:15;3799:29;;3655:178;3921:15;3880:38;518:6;3880:4;:15;;;:19;;:38;;;;:::i;:::-;:56;3877:69;;;3938:8;;;3877:69;444:9;3959:11;:26;3956:138;;;4014:29;444:9;4014:11;:15;;:29;;;;:::i;:::-;4001:4;:10;;:42;;;;444:9;4057:26;;3956:138;4116:15;4098:4;:15;;:33;;;;4152:45;4171:25;4194:1;4171:18;4187:1;4171:11;:15;;:18;;;;:::i;:::-;:22;;:25;;;;:::i;:::-;4152:4;:14;;;:18;;:45;;;;:::i;:::-;4135:4;:14;;:62;;;;4217:44;4235:25;4258:1;4235:18;4251:1;4235:11;:15;;:18;;;;:::i;:::-;:22;;:25;;;;:::i;:::-;4217:13;;:17;;:44;;;;:::i;:::-;4201:13;:60;;;;4266:10;:19;;:46;4286:25;4309:1;4286:18;4302:1;4286:11;:15;;:18;;;;:::i;:::-;:22;;:25;;;;:::i;:::-;4266:46;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4266:46:0;4332:10;4322:34;;;4344:11;4322:34;;;;;;;;;;;;;;;;;;3153:1207;;;;;:::o;6162:129::-;6238:7;6258:5;:18;6264:11;6258:18;;;;;;;;;;;;;;;:29;;;6251:36;;6162:129;;;:::o;236:41::-;274:3;236:41;:::o;7436:132::-;7479:22;7503:19;7535:13;;7550;;7528:36;;;;7436:132;;:::o;528:28::-;;;;:::o;1584:1566::-;153:9;1657;:30;;1649:39;;;;;;1713:5;:12;;;;1706:4;:19;;;1698:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1747:11;1761:48;323:4;1761:26;274:3;1761:9;:13;;:26;;;;:::i;:::-;:30;;:48;;;;:::i;:::-;1747:62;;1816:16;;;;;;;;;;;:25;;:30;1842:3;1816:30;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1816:30:0;1864:10;1855:25;;;1876:3;1855:25;;;;;;;;;;;;;;;;;;1885:17;1905:5;:17;1911:10;1905:17;;;;;;;;;;;;;;;1885:37;;1955:1;1930:27;;:4;:13;;;;;;;;;;;;:27;;;1926:397;;;2002:1;1968:5;:15;1974:8;1968:15;;;;;;;;;;;;;;;:24;;:31;;;;:35;:61;;;;;2019:10;2007:22;;:8;:22;;;;1968:61;1964:103;;;2053:8;2037:4;:13;;;:24;;;;;;;;;;;;;;;;;;1964:103;2072:14;2089:4;:13;;;;;;;;;;;;2072:30;;2112:9;2124:1;2112:13;;2107:212;2131:17;:24;;;;2127:1;:28;2107:212;;;2190:1;2172:20;;:6;:20;;;2168:145;;2227:30;2255:1;2227:5;:13;2233:6;2227:13;;;;;;;;;;;;;;;:20;;2248:1;2227:23;;;;;;;;;:27;;:30;;;;:::i;:::-;2201:5;:13;2207:6;2201:13;;;;;;;;;;;;;;;:20;;2222:1;2201:23;;;;;;;;:56;;;;2273:5;:13;2279:6;2273:13;;;;;;;;;;;;;;;:22;;;;;;;;;;;;2264:31;;2168:145;;;2308:5;;2168:145;2157:3;;;;;;;2107:212;;;;1926:397;;2356:1;2331:27;;:4;:13;;;;;;;;;;;;:27;;;2327:551;;2365:14;2382:4;:13;;;;;;;;;;;;2365:30;;2405:9;2417:1;2405:13;;2400:474;2424:17;:24;;;;2420:1;:28;2400:474;;;2483:1;2465:20;;:6;:20;;;2461:407;;2494:14;2511:57;323:4;2511:35;2525:17;2543:1;2525:20;;;;;;;;;;;;;;;;2511:9;:13;;:35;;;;:::i;:::-;:39;;:57;;;;:::i;:::-;2494:74;;2597:31;2621:6;2597:5;:13;2603:6;2597:13;;;;;;;;;;;;;;;:19;;;:23;;:31;;;;:::i;:::-;2575:5;:13;2581:6;2575:13;;;;;;;;;;;;;;;:19;;:53;;;;2662:36;2691:6;2662:5;:13;2668:6;2662:13;;;;;;;;;;;;;;;:24;;;:28;;:36;;;;:::i;:::-;2635:5;:13;2641:6;2635:13;;;;;;;;;;;;;;;:24;;:63;;;;2736:25;2754:6;2736:13;;:17;;:25;;;;:::i;:::-;2720:13;:41;;;;2802:1;2790:10;2773:39;;2782:6;2773:39;;;2805:6;2773:39;;;;;;;;;;;;;;;;;;2828:5;:13;2834:6;2828:13;;;;;;;;;;;;;;;:22;;;;;;;;;;;;2819:31;;2461:407;;;;2863:5;;2461:407;2450:3;;;;;;;2400:474;;;;2327:551;;2910:1;2886:4;:13;;:20;;;;:25;2882:102;;;2936:15;2918:4;:15;;:33;;;;2961:18;2968:10;2961:18;;;;;;;;;;;;;;;;;;;;;;2882:102;2988:4;:13;;3007:41;;;;;;;;3015:4;3007:41;;;;;;3021:9;3007:41;;;;3032:15;3007:41;;;2988:61;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;2988:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3069:28;3087:9;3069:13;;:17;;:28;;;;:::i;:::-;3053:13;:44;;;;3118:10;3107:39;;;3130:4;3136:9;3107:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;1584:1566;;;;:::o;176:57::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7571:253::-;7633:20;7655:22;7679;7714:33;7735:11;7714:20;:33::i;:::-;7749:34;7771:11;7749:21;:34::i;:::-;7785;7807:11;7785:21;:34::i;:::-;7707:113;;;;;;7571:253;;;;;:::o;559:28::-;;;;:::o;6294:158::-;6369:7;6389:59;6423:5;:18;6429:11;6423:18;;;;;;;;;;;;;;;:24;;;6389:5;:18;6395:11;6389:18;;;;;;;;;;;;;;;:29;;;:33;;:59;;;;:::i;:::-;6382:66;;6294:158;;;:::o;4363:96::-;4414:7;4442:4;4434:21;;;4427:28;;4363:96;:::o;6752:227::-;6823:14;6848:9;6860:1;6848:13;;6843:133;6867:5;:18;6873:11;6867:18;;;;;;;;;;;;;;;:27;;:34;;;;6863:1;:38;6843:133;;;6922:49;6933:5;:18;6939:11;6933:18;;;;;;;;;;;;;;;:27;;6961:1;6933:30;;;;;;;;;;;;;;;;;;:37;;;6922:6;:10;;:49;;;;:::i;:::-;6913:58;;6903:3;;;;;;;6843:133;;;;6752:227;;;:::o;405:48::-;444:9;405:48;:::o;474:50::-;518:6;474:50;:::o;976:39::-;;;;;;;;;;;;;:::o;6617:132::-;6691:7;6711:5;:18;6717:11;6711:18;;;;;;;;;;;;;;;:27;;:34;;;;6704:41;;6617:132;;;:::o;4462:148::-;4515:12;4529:15;4557:5;4563:4;4557:11;;;;;;;;;;;;;;;;;;;;:16;;;4550:23;;4587:5;4593:4;4587:11;;;;;;;;;;;;;;;;;;;;:19;;;4577:29;;4462:148;;;:::o;6982:451::-;7066:10;7078:15;7095:14;7111:13;7126:14;7149:17;7169:5;:18;7175:11;7169:18;;;;;;;;;;;;;;;7149:38;;7199:4;:13;;7213:5;7199:20;;;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;7192:32;;7238:5;7244:4;7238:11;;;;;;;;;;;;;;;;;;;;:19;;;7228:29;;7270:4;:13;;7284:5;7270:20;;;;;;;;;;;;;;;;;;:27;;;7261:36;;7309:4;:13;;7323:5;7309:20;;;;;;;;;;;;;;;;;;:26;;;7301:34;;7348:81;7379:49;7421:6;7379:5;7385:4;:13;;7399:5;7385:20;;;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;7379:32;;;;;;;;;;;;;;;;;;;;:37;;;:41;;:49;;;;:::i;:::-;7348:4;:13;;7362:5;7348:20;;;;;;;;;;;;;;;;;;:26;;;:30;;:81;;;;:::i;:::-;7339:90;;6982:451;;;;;;;;;:::o;5495:121::-;5563:7;5583:5;:18;5589:11;5583:18;;;;;;;;;;;;;;;:29;;;5576:36;;5495:121;;;:::o;109:53::-;153:9;109:53;:::o;6040:119::-;6111:7;6131:5;:18;6137:11;6131:18;;;;;;;;;;;;;;;:24;;;6124:31;;6040:119;;;:::o;5367:125::-;5440:7;5460:5;:18;5466:11;5460:18;;;;;;;;;;;;;;;:28;;;5453:35;;5367:125;;;:::o;5884:153::-;5956:7;6005:5;:18;6011:11;6005:18;;;;;;;;;;;;;;;:25;;6031:1;6005:28;;;;;;;;;5976:5;:18;5982:11;5976:18;;;;;;;;;;;;;;;:25;;6002:1;5976:28;;;;;;;;;:57;5969:64;;5884:153;;;:::o;8378:239::-;8436:7;8464:1;8459;:6;8455:45;;;8488:1;8481:8;;;;8455:45;8509:9;8525:1;8521;:5;8509:17;;8553:1;8548;8544;:5;;;;;;:10;8536:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8609:1;8602:8;;;8378:239;;;;;:::o;8015:175::-;8073:7;8092:9;8108:1;8104;:5;8092:17;;8132:1;8127;:6;;8119:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8182:1;8175:8;;;8015:175;;;;:::o;8622:173::-;8680:7;8711:1;8707;:5;8699:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8753:9;8769:1;8765;:5;;;;;;8753:17;;8787:1;8780:8;;;8622:173;;;;:::o;8195:178::-;8253:7;8285:1;8280;:6;;8272:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8331:9;8347:1;8343;:5;8331:17;;8365:1;8358:8;;;8195:178;;;;:::o;58:7932::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;148:4;140:6;136:17;126:27;;0:157;58:7932:0;;;;:::o"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "1880600",
"executionCost": "infinite",
"totalCost": "infinite"
},
"external": {
"INVEST_MIN_AMOUNT()": "249",
"MAX_WITHDRAW()": "272",
"PERCENTS_DIVIDER()": "252",
"PROJECT_FEE()": "273",
"REFERRAL_PERCENTS(uint256)": "869",
"TIME_STEP()": "273",
"WITHDRAW_COOLDOWN()": "294",
"commissionWallet()": "564",
"getContractBalance()": "708",
"getPlanInfo(uint8)": "1410",
"getSiteInfo()": "737",
"getUserAmountOfDeposits(address)": "655",
"getUserAvailable(address)": "infinite",
"getUserCheckpoint(address)": "713",
"getUserDepositInfo(address,uint256)": "infinite",
"getUserDividends(address)": "infinite",
"getUserDownlineCount(address)": "infinite",
"getUserInfo(address)": "infinite",
"getUserReferralBonus(address)": "668",
"getUserReferralTotalBonus(address)": "648",
"getUserReferralWithdrawn(address)": "infinite",
"getUserReferrer(address)": "740",
"getUserTotalDeposits(address)": "infinite",
"getUserTotalReferrals(address)": "1072",
"getUserTotalWithdrawn(address)": "690",
"invest(address,uint8)": "infinite",
"totalInvested()": "450",
"totalRefBonus()": "451",
"withdraw()": "infinite"
},
"internal": {
"isContract(address)": "infinite"
}
},
"methodIdentifiers": {
"INVEST_MIN_AMOUNT()": "e262113e",
"MAX_WITHDRAW()": "852aa16b",
"PERCENTS_DIVIDER()": "01c234a8",
"PROJECT_FEE()": "48d44bd1",
"REFERRAL_PERCENTS(uint256)": "600d20ce",
"TIME_STEP()": "32bc298c",
"WITHDRAW_COOLDOWN()": "950d91e9",
"commissionWallet()": "97c0262a",
"getContractBalance()": "6f9fb98a",
"getPlanInfo(uint8)": "aecaa634",
"getSiteInfo()": "4ce87053",
"getUserAmountOfDeposits(address)": "a8aeb6c2",
"getUserAvailable(address)": "153ab9df",
"getUserCheckpoint(address)": "d7ffca91",
"getUserDepositInfo(address,uint256)": "c0806b03",
"getUserDividends(address)": "040a772e",
"getUserDownlineCount(address)": "03a93c0c",
"getUserInfo(address)": "6386c1c7",
"getUserReferralBonus(address)": "e85abe09",
"getUserReferralTotalBonus(address)": "48c37203",
"getUserReferralWithdrawn(address)": "6bb18556",
"getUserReferrer(address)": "36144c9a",
"getUserTotalDeposits(address)": "7e3abeea",
"getUserTotalReferrals(address)": "fbfcb279",
"getUserTotalWithdrawn(address)": "fb4cb32b",
"invest(address,uint8)": "581c5ae6",
"totalInvested()": "5216aeec",
"totalRefBonus()": "69b11dd5",
"withdraw()": "3ccfd60b"
}
},
"abi": [
{
"constant": true,
"inputs": [],
"name": "PERCENTS_DIVIDER",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserDownlineCount",
"outputs": [
{
"name": "referrals",
"type": "uint256[3]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserDividends",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserAvailable",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "TIME_STEP",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferrer",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralTotalBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PROJECT_FEE",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getSiteInfo",
"outputs": [
{
"name": "_totalInvested",
"type": "uint256"
},
{
"name": "_totalBonus",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalInvested",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "referrer",
"type": "address"
},
{
"name": "plan",
"type": "uint8"
}
],
"name": "invest",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "REFERRAL_PERCENTS",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserInfo",
"outputs": [
{
"name": "totalDeposit",
"type": "uint256"
},
{
"name": "totalWithdrawn",
"type": "uint256"
},
{
"name": "totalReferrals",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalRefBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralWithdrawn",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getContractBalance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalDeposits",
"outputs": [
{
"name": "amount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_WITHDRAW",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "WITHDRAW_COOLDOWN",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "commissionWallet",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserAmountOfDeposits",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "plan",
"type": "uint8"
}
],
"name": "getPlanInfo",
"outputs": [
{
"name": "time",
"type": "uint256"
},
{
"name": "percent",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
},
{
"name": "index",
"type": "uint256"
}
],
"name": "getUserDepositInfo",
"outputs": [
{
"name": "plan",
"type": "uint8"
},
{
"name": "percent",
"type": "uint256"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "start",
"type": "uint256"
},
{
"name": "finish",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserCheckpoint",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "INVEST_MIN_AMOUNT",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalWithdrawn",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalReferrals",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "wallet",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "user",
"type": "address"
}
],
"name": "Newbie",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "plan",
"type": "uint8"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "NewDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "Withdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "referrer",
"type": "address"
},
{
"indexed": true,
"name": "referral",
"type": "address"
},
{
"indexed": true,
"name": "level",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "RefBonus",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "totalAmount",
"type": "uint256"
}
],
"name": "FeePayed",
"type": "event"
}
]
}
{
"compiler": {
"version": "0.5.10+commit.5a6ea5b1"
},
"language": "Solidity",
"output": {
"abi": [
{
"constant": true,
"inputs": [],
"name": "PERCENTS_DIVIDER",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserDownlineCount",
"outputs": [
{
"name": "referrals",
"type": "uint256[3]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserDividends",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserAvailable",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "TIME_STEP",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferrer",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [],
"name": "withdraw",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralTotalBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "PROJECT_FEE",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getSiteInfo",
"outputs": [
{
"name": "_totalInvested",
"type": "uint256"
},
{
"name": "_totalBonus",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalInvested",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "referrer",
"type": "address"
},
{
"name": "plan",
"type": "uint8"
}
],
"name": "invest",
"outputs": [],
"payable": true,
"stateMutability": "payable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "",
"type": "uint256"
}
],
"name": "REFERRAL_PERCENTS",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserInfo",
"outputs": [
{
"name": "totalDeposit",
"type": "uint256"
},
{
"name": "totalWithdrawn",
"type": "uint256"
},
{
"name": "totalReferrals",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "totalRefBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralWithdrawn",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getContractBalance",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalDeposits",
"outputs": [
{
"name": "amount",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "MAX_WITHDRAW",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "WITHDRAW_COOLDOWN",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "commissionWallet",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserAmountOfDeposits",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "plan",
"type": "uint8"
}
],
"name": "getPlanInfo",
"outputs": [
{
"name": "time",
"type": "uint256"
},
{
"name": "percent",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
},
{
"name": "index",
"type": "uint256"
}
],
"name": "getUserDepositInfo",
"outputs": [
{
"name": "plan",
"type": "uint8"
},
{
"name": "percent",
"type": "uint256"
},
{
"name": "amount",
"type": "uint256"
},
{
"name": "start",
"type": "uint256"
},
{
"name": "finish",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserCheckpoint",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "INVEST_MIN_AMOUNT",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserReferralBonus",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalWithdrawn",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "userAddress",
"type": "address"
}
],
"name": "getUserTotalReferrals",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"name": "wallet",
"type": "address"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "user",
"type": "address"
}
],
"name": "Newbie",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "plan",
"type": "uint8"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "NewDeposit",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "Withdrawn",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "referrer",
"type": "address"
},
{
"indexed": true,
"name": "referral",
"type": "address"
},
{
"indexed": true,
"name": "level",
"type": "uint256"
},
{
"indexed": false,
"name": "amount",
"type": "uint256"
}
],
"name": "RefBonus",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"name": "user",
"type": "address"
},
{
"indexed": false,
"name": "totalAmount",
"type": "uint256"
}
],
"name": "FeePayed",
"type": "event"
}
],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/bnbstake.sol": "BnbStake"
},
"evmVersion": "petersburg",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/bnbstake.sol": {
"keccak256": "0x01acc2eb947402f911769a67f9fbbd86c90b3b441ed8df74f81ebfcf6b561246",
"urls": [
"bzzr://1abf0973674ca50a7237d9db26dca74f3ba531572d26a049ba0ae3629b84cf36",
"dweb:/ipfs/QmV6jsBiQ9Zg3w4rXvhvHfo8z6A6vcEHcqvUewADemB3DQ"
]
}
},
"version": 1
}
{
"deploy": {
"VM:-": {
"linkReferences": {},
"autoDeployLib": true
},
"main:1": {
"linkReferences": {},
"autoDeployLib": true
},
"ropsten:3": {
"linkReferences": {},
"autoDeployLib": true
},
"rinkeby:4": {
"linkReferences": {},
"autoDeployLib": true
},
"kovan:42": {
"linkReferences": {},
"autoDeployLib": true
},
"görli:5": {
"linkReferences": {},
"autoDeployLib": true
},
"Custom": {
"linkReferences": {},
"autoDeployLib": true
}
},
"data": {
"bytecode": {
"linkReferences": {},
"object": "60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723058204e69bb6edd487cd8878d7df7f7931106818442527004aea9318bb25044acfd2964736f6c634300050a0032",
"opcodes": "PUSH1 0x55 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0x4e PUSH10 0xBB6EDD487CD8878D7DF7 0xf7 SWAP4 GT MOD DUP2 DUP5 TIMESTAMP MSTORE PUSH17 0x4AEA9318BB25044ACFD2964736F6C6343 STOP SDIV EXP STOP ORIGIN ",
"sourceMap": "7992:805:0:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24"
},
"deployedBytecode": {
"linkReferences": {},
"object": "73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723058204e69bb6edd487cd8878d7df7f7931106818442527004aea9318bb25044acfd2964736f6c634300050a0032",
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH6 0x627A7A723058 KECCAK256 0x4e PUSH10 0xBB6EDD487CD8878D7DF7 0xf7 SWAP4 GT MOD DUP2 DUP5 TIMESTAMP MSTORE PUSH17 0x4AEA9318BB25044ACFD2964736F6C6343 STOP SDIV EXP STOP ORIGIN ",
"sourceMap": "7992:805:0:-;;;;;;;;"
},
"gasEstimates": {
"creation": {
"codeDepositCost": "17000",
"executionCost": "94",
"totalCost": "17094"
},
"internal": {
"add(uint256,uint256)": "infinite",
"div(uint256,uint256)": "infinite",
"mul(uint256,uint256)": "infinite",
"sub(uint256,uint256)": "infinite"
}
},
"methodIdentifiers": {}
},
"abi": []
}
{
"compiler": {
"version": "0.5.10+commit.5a6ea5b1"
},
"language": "Solidity",
"output": {
"abi": [],
"devdoc": {
"methods": {}
},
"userdoc": {
"methods": {}
}
},
"settings": {
"compilationTarget": {
"contracts/bnbstake.sol": "SafeMath"
},
"evmVersion": "petersburg",
"libraries": {},
"optimizer": {
"enabled": false,
"runs": 200
},
"remappings": []
},
"sources": {
"contracts/bnbstake.sol": {
"keccak256": "0x01acc2eb947402f911769a67f9fbbd86c90b3b441ed8df74f81ebfcf6b561246",
"urls": [
"bzzr://1abf0973674ca50a7237d9db26dca74f3ba531572d26a049ba0ae3629b84cf36",
"dweb:/ipfs/QmV6jsBiQ9Zg3w4rXvhvHfo8z6A6vcEHcqvUewADemB3DQ"
]
}
},
"version": 1
}
// SPDX-License-Identifier: MIT
pragma solidity 0.5.10;
contract BnbStake {
using SafeMath for uint256;
uint256 constant public INVEST_MIN_AMOUNT = 0.8 ether; // 0.8 bnb
uint256[] public REFERRAL_PERCENTS = [50, 40, 30, 20, 10];
uint256 constant public PROJECT_FEE = 100;
uint256 constant public PERCENTS_DIVIDER = 1000;
uint256 constant public TIME_STEP = 1 days;
/*! anti-whale */
uint256 constant public MAX_WITHDRAW = 100 ether; // 100 BNB MAX
uint256 constant public WITHDRAW_COOLDOWN = 1 days;
uint256 public totalInvested;
uint256 public totalRefBonus;
struct Plan {
uint256 time;
uint256 percent;
}
Plan[] internal plans;
struct Deposit {
uint8 plan;
uint256 amount;
uint256 start;
}
struct User {
Deposit[] deposits;
uint256 checkpoint;
address referrer;
uint256[3] levels;
uint256 bonus;
uint256 totalBonus;
uint256 withdrawn;
}
mapping (address => User) internal users;
address payable public commissionWallet;
event Newbie(address user);
event NewDeposit(address indexed user, uint8 plan, uint256 amount);
event Withdrawn(address indexed user, uint256 amount);
event RefBonus(address indexed referrer, address indexed referral, uint256 indexed level, uint256 amount);
event FeePayed(address indexed user, uint256 totalAmount);
constructor(address payable wallet) public {
require(!isContract(wallet));
commissionWallet = wallet;
plans.push(Plan(15, 120)); // 15 days 12% daily // 180%
plans.push(Plan(30, 100)); // 30 days 10% daily // 300%
}
function invest(address referrer, uint8 plan) public payable {
require(msg.value >= INVEST_MIN_AMOUNT);
require(plan < plans.length, "Invalid plan");
uint256 fee = msg.value.mul(PROJECT_FEE).div(PERCENTS_DIVIDER);
commissionWallet.transfer(fee);
emit FeePayed(msg.sender, fee);
User storage user = users[msg.sender];
if (user.referrer == address(0)) {
if (users[referrer].deposits.length > 0 && referrer != msg.sender) {
user.referrer = referrer;
}
address upline = user.referrer;
for (uint256 i = 0; i < REFERRAL_PERCENTS.length; i++) {
if (upline != address(0)) {
users[upline].levels[i] = users[upline].levels[i].add(1);
upline = users[upline].referrer;
} else break;
}
}
if (user.referrer != address(0)) {
address upline = user.referrer;
for (uint256 i = 0; i < REFERRAL_PERCENTS.length; i++) {
if (upline != address(0)) {
uint256 amount = msg.value.mul(REFERRAL_PERCENTS[i]).div(PERCENTS_DIVIDER);
users[upline].bonus = users[upline].bonus.add(amount);
users[upline].totalBonus = users[upline].totalBonus.add(amount);
totalRefBonus = totalRefBonus.add(amount);
emit RefBonus(upline, msg.sender, i, amount);
upline = users[upline].referrer;
} else break;
}
}
if (user.deposits.length == 0) {
user.checkpoint = block.timestamp;
emit Newbie(msg.sender);
}
user.deposits.push(Deposit(plan, msg.value, block.timestamp));
totalInvested = totalInvested.add(msg.value);
emit NewDeposit(msg.sender, plan, msg.value);
}
function withdraw() public {
User storage user = users[msg.sender];
uint256 totalAmount = getUserDividends(msg.sender);
uint256 referralBonus = getUserReferralBonus(msg.sender);
if (referralBonus > 0) {
user.bonus = 0;
totalAmount = totalAmount.add(referralBonus);
}
require(totalAmount > 0, "User has no dividends");
uint256 fee = totalAmount.div(10);
commissionWallet.transfer(fee);
emit FeePayed(msg.sender, fee);
uint256 contractBalance = address(this).balance;
if (contractBalance < totalAmount) {
user.bonus = totalAmount.sub(contractBalance);
user.totalBonus = user.totalBonus.add(user.bonus);
totalAmount = contractBalance;
}
/*! anti-whale */
if(user.checkpoint.add(WITHDRAW_COOLDOWN) > block.timestamp) revert();
if(totalAmount > MAX_WITHDRAW) {
user.bonus = totalAmount.sub(MAX_WITHDRAW);
totalAmount = MAX_WITHDRAW;
}
user.checkpoint = block.timestamp;
user.withdrawn = user.withdrawn.add(totalAmount.mul(4).div(5));
totalInvested = totalInvested.add(totalAmount.mul(1).div(5));
msg.sender.transfer(totalAmount.mul(4).div(5));
emit Withdrawn(msg.sender, totalAmount);
}
function getContractBalance() public view returns (uint256) {
return address(this).balance;
}
function getPlanInfo(uint8 plan) public view returns(uint256 time, uint256 percent) {
time = plans[plan].time;
percent = plans[plan].percent;
}
function getUserDividends(address userAddress) public view returns (uint256) {
User storage user = users[userAddress];
uint256 totalAmount;
for (uint256 i = 0; i < user.deposits.length; i++) {
uint256 finish = user.deposits[i].start.add(plans[user.deposits[i].plan].time.mul(1 days));
if (user.checkpoint < finish) {
uint256 share = user.deposits[i].amount.mul(plans[user.deposits[i].plan].percent).div(PERCENTS_DIVIDER);
uint256 from = user.deposits[i].start > user.checkpoint ? user.deposits[i].start : user.checkpoint;
uint256 to = finish < block.timestamp ? finish : block.timestamp;
if (from < to) {
totalAmount = totalAmount.add(share.mul(to.sub(from)).div(TIME_STEP));
}
}
}
return totalAmount;
}
function getUserTotalWithdrawn(address userAddress) public view returns (uint256) {
return users[userAddress].withdrawn;
}
function getUserCheckpoint(address userAddress) public view returns(uint256) {
return users[userAddress].checkpoint;
}
function getUserReferrer(address userAddress) public view returns(address) {
return users[userAddress].referrer;
}
function getUserDownlineCount(address userAddress) public view returns(uint256[3] memory referrals) {
return (users[userAddress].levels);
}
function getUserTotalReferrals(address userAddress) public view returns(uint256) {
return users[userAddress].levels[0]+users[userAddress].levels[1];
}
function getUserReferralBonus(address userAddress) public view returns(uint256) {
return users[userAddress].bonus;
}
function getUserReferralTotalBonus(address userAddress) public view returns(uint256) {
return users[userAddress].totalBonus;
}
function getUserReferralWithdrawn(address userAddress) public view returns(uint256) {
return users[userAddress].totalBonus.sub(users[userAddress].bonus);
}
function getUserAvailable(address userAddress) public view returns(uint256) {
return getUserReferralBonus(userAddress).add(getUserDividends(userAddress));
}
function getUserAmountOfDeposits(address userAddress) public view returns(uint256) {
return users[userAddress].deposits.length;
}
function getUserTotalDeposits(address userAddress) public view returns(uint256 amount) {
for (uint256 i = 0; i < users[userAddress].deposits.length; i++) {
amount = amount.add(users[userAddress].deposits[i].amount);
}
}
function getUserDepositInfo(address userAddress, uint256 index) public view returns(uint8 plan, uint256 percent, uint256 amount, uint256 start, uint256 finish) {
User storage user = users[userAddress];
plan = user.deposits[index].plan;
percent = plans[plan].percent;
amount = user.deposits[index].amount;
start = user.deposits[index].start;
finish = user.deposits[index].start.add(plans[user.deposits[index].plan].time.mul(1 days));
}
function getSiteInfo() public view returns(uint256 _totalInvested, uint256 _totalBonus) {
return(totalInvested, totalRefBonus);
}
function getUserInfo(address userAddress) public view returns(uint256 totalDeposit, uint256 totalWithdrawn, uint256 totalReferrals) {
return(getUserTotalDeposits(userAddress), getUserTotalWithdrawn(userAddress), getUserTotalReferrals(userAddress));
}
function isContract(address addr) internal view returns (bool) {
uint size;
assembly { size := extcodesize(addr) }
return size > 0;
}
}
library SafeMath {
function add(uint256 a, uint256 b) internal pure returns (uint256) {
uint256 c = a + b;
require(c >= a, "SafeMath: addition overflow");
return c;
}
function sub(uint256 a, uint256 b) internal pure returns (uint256) {
require(b <= a, "SafeMath: subtraction overflow");
uint256 c = a - b;
return c;
}
function mul(uint256 a, uint256 b) internal pure returns (uint256) {
if (a == 0) {
return 0;
}
uint256 c = a * b;
require(c / a == b, "SafeMath: multiplication overflow");
return c;
}
function div(uint256 a, uint256 b) internal pure returns (uint256) {
require(b > 0, "SafeMath: division by zero");
uint256 c = a / b;
return c;
}
}
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithEthers script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
// 'web3Provider' is a remix global variable object
const signer = (new ethers.providers.Web3Provider(web3Provider)).getSigner()
let factory = new ethers.ContractFactory(metadata.abi, metadata.data.bytecode.object, signer);
let contract = await factory.deploy(...constructorArgs);
console.log('Contract Address: ', contract.address);
// The contract is NOT deployed yet; we must wait until it is mined
await contract.deployed()
console.log('Deployment successful.')
} catch (e) {
console.log(e.message)
}
})()
// Right click on the script name and hit "Run" to execute
(async () => {
try {
console.log('Running deployWithWeb3 script...')
const contractName = 'Storage' // Change this for other contract
const constructorArgs = [] // Put constructor args (if any) here for your contract
// Note that the script needs the ABI which is generated from the compilation artifact.
// Make sure contract is compiled and artifacts are generated
const artifactsPath = `browser/contracts/artifacts/${contractName}.json` // Change this for different path
const metadata = JSON.parse(await remix.call('fileManager', 'getFile', artifactsPath))
const accounts = await web3.eth.getAccounts()
let contract = new web3.eth.Contract(metadata.abi)
contract = contract.deploy({
data: metadata.data.bytecode.object,
arguments: constructorArgs
})
const newContractInstance = await contract.send({
from: accounts[0],
gas: 1500000,
gasPrice: '30000000000'
})
console.log('Contract deployed at address: ', newContractInstance.options.address)
} catch (e) {
console.log(e.message)
}
})()
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
import "remix_tests.sol"; // this import is automatically injected by Remix.
import "../contracts/3_Ballot.sol";
contract BallotTest {
bytes32[] proposalNames;
Ballot ballotToTest;
function beforeAll () public {
proposalNames.push(bytes32("candidate1"));
ballotToTest = new Ballot(proposalNames);
}
function checkWinningProposal () public {
ballotToTest.vote(0);
Assert.equal(ballotToTest.winningProposal(), uint(0), "proposal at index 0 should be the winning proposal");
Assert.equal(ballotToTest.winnerName(), bytes32("candidate1"), "candidate1 should be the winner name");
}
function checkWinninProposalWithReturnValue () public view returns (bool) {
return ballotToTest.winningProposal() == 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment