Socket
Socket
Sign inDemoInstall

@openzeppelin/contracts

Package Overview
Dependencies
Maintainers
3
Versions
85
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@openzeppelin/contracts - npm Package Compare versions

Comparing version 4.4.2 to 4.9.3

access/AccessControlCrossChain.sol

4

build/contracts/Address.json

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5b524fec8b9ccdfacf94c78b3cd4db0981b514f7b5d7b81edeeb9126cdc0a2d64736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f5b524fec8b9ccdfacf94c78b3cd4db0981b514f7b5d7b81edeeb9126cdc0a2d64736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e314a746944a88937ddf36f70d12597ff2704256740dc7ecc710cd852fcdb75664736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e314a746944a88937ddf36f70d12597ff2704256740dc7ecc710cd852fcdb75664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b40da880889aec98c844b33cf0a361396ec207a5b188e21683666e7818b223fc64736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220b40da880889aec98c844b33cf0a361396ec207a5b188e21683666e7818b223fc64736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f639f3917a7155d9dac2ac79c05c349410ec2f1d4c410d25367ff627cf1d3fcf64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f639f3917a7155d9dac2ac79c05c349410ec2f1d4c410d25367ff627cf1d3fcf64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -76,6 +76,6 @@ {

],
"bytecode": "0x608060405260405161098838038061098883398101604081905261002291610483565b61004d60017fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5161058e565b6000805160206109418339815191521461007757634e487b7160e01b600052600160045260246000fd5b6100838282600061008a565b50506105f3565b61009383610164565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a26000825111806100d45750805b1561015f5761015d836001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561011557600080fd5b505afa158015610129573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061014d9190610469565b8361030460201b6100291760201c565b505b505050565b6101778161033060201b6100551760201c565b6101d65760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b610259816001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561021257600080fd5b505afa158015610226573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061024a9190610469565b61033060201b6100551760201c565b6102be5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b60648201526084016101cd565b806102e360008051602061094183398151915260001b61033a60201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b606061032983836040518060600160405280602781526020016109616027913961033d565b9392505050565b803b15155b919050565b90565b606061034884610330565b6103a35760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016101cd565b600080856001600160a01b0316856040516103be919061053f565b600060405180830381855af49150503d80600081146103f9576040519150601f19603f3d011682016040523d82523d6000602084013e6103fe565b606091505b50909250905061040f828286610419565b9695505050505050565b60608315610428575081610329565b8251156104385782518084602001fd5b8160405162461bcd60e51b81526004016101cd919061055b565b80516001600160a01b038116811461033557600080fd5b60006020828403121561047a578081fd5b61032982610452565b60008060408385031215610495578081fd5b61049e83610452565b60208401519092506001600160401b03808211156104ba578283fd5b818501915085601f8301126104cd578283fd5b8151818111156104df576104df6105dd565b604051601f8201601f19908116603f01168101908382118183101715610507576105076105dd565b8160405282815288602084870101111561051f578586fd5b6105308360208301602088016105b1565b80955050505050509250929050565b600082516105518184602087016105b1565b9190910192915050565b600060208252825180602084015261057a8160408501602087016105b1565b601f01601f19169190910160400192915050565b6000828210156105ac57634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156105cc5781810151838201526020016105b4565b8381111561015d5750506000910152565b634e487b7160e01b600052604160045260246000fd5b61033f806106026000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e36027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610263565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b8152600401610185919061027f565b60006020828403121561024d578081fd5b81516001600160a01b038116811461004e578182fd5b600082516102758184602087016102b2565b9190910192915050565b600060208252825180602084015261029e8160408501602087016102b2565b601f01601f19169190910160400192915050565b60005b838110156102cd5781810151838201526020016102b5565b838111156102dc576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e5fd3e14b0a59a665fb986c9d748cb38a1c433c36ae2e9576d3af1edacfa509e64736f6c63430008030033a3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b61002761002261005e565b610106565b565b606061004e83836040518060600160405280602781526020016102e36027913961012a565b9392505050565b3b151590565b90565b60006100917fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b815260040160206040518083038186803b1580156100c957600080fd5b505afa1580156100dd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610101919061023c565b905090565b3660008037600080366000845af43d6000803e808015610125573d6000f35b3d6000fd5b6060833b61018e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b0316856040516101a99190610263565b600060405180830381855af49150503d80600081146101e4576040519150601f19603f3d011682016040523d82523d6000602084013e6101e9565b606091505b50915091506101f9828286610203565b9695505050505050565b6060831561021257508161004e565b8251156102225782518084602001fd5b8160405162461bcd60e51b8152600401610185919061027f565b60006020828403121561024d578081fd5b81516001600160a01b038116811461004e578182fd5b600082516102758184602087016102b2565b9190910192915050565b600060208252825180602084015261029e8160408501602087016102b2565b601f01601f19169190910160400192915050565b60005b838110156102cd5781810151838201526020016102b5565b838111156102dc576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e5fd3e14b0a59a665fb986c9d748cb38a1c433c36ae2e9576d3af1edacfa509e64736f6c63430008030033",
"bytecode": "0x608060405260405161091438038061091483398101604081905261002291610463565b61002e82826000610035565b505061058d565b61003e83610100565b6040516001600160a01b038416907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e90600090a260008251118061007f5750805b156100fb576100f9836001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100e99190610523565b836102a360201b6100291760201c565b505b505050565b610113816102cf60201b6100551760201c565b6101725760405162461bcd60e51b815260206004820152602560248201527f455243313936373a206e657720626561636f6e206973206e6f74206120636f6e6044820152641d1c9858dd60da1b60648201526084015b60405180910390fd5b6101e6816001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101d79190610523565b6102cf60201b6100551760201c565b61024b5760405162461bcd60e51b815260206004820152603060248201527f455243313936373a20626561636f6e20696d706c656d656e746174696f6e206960448201526f1cc81b9bdd08184818dbdb9d1c9858dd60821b6064820152608401610169565b806102827fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5060001b6102de60201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b60606102c883836040518060600160405280602781526020016108ed602791396102e1565b9392505050565b6001600160a01b03163b151590565b90565b6060600080856001600160a01b0316856040516102fe919061053e565b600060405180830381855af49150503d8060008114610339576040519150601f19603f3d011682016040523d82523d6000602084013e61033e565b606091505b5090925090506103508683838761035a565b9695505050505050565b606083156103c95782516000036103c2576001600160a01b0385163b6103c25760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610169565b50816103d3565b6103d383836103db565b949350505050565b8151156103eb5781518083602001fd5b8060405162461bcd60e51b8152600401610169919061055a565b80516001600160a01b038116811461041c57600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b8381101561045257818101518382015260200161043a565b838111156100f95750506000910152565b6000806040838503121561047657600080fd5b61047f83610405565b60208401519092506001600160401b038082111561049c57600080fd5b818501915085601f8301126104b057600080fd5b8151818111156104c2576104c2610421565b604051601f8201601f19908116603f011681019083821181831017156104ea576104ea610421565b8160405282815288602084870101111561050357600080fd5b610514836020830160208801610437565b80955050505050509250929050565b60006020828403121561053557600080fd5b6102c882610405565b60008251610550818460208701610437565b9190910192915050565b6020815260008251806020840152610579816040850160208701610437565b601f01601f19169190910160400192915050565b6103518061059c6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f560279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061024c565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a5565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b60608315610210578251600003610209576001600160a01b0385163b6102095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b508161021a565b61021a8383610222565b949350505050565b8151156102325781518083602001fd5b8060405162461bcd60e51b815260040161020091906102c1565b60006020828403121561025e57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b83811015610290578181015183820152602001610278565b8381111561029f576000848401525b50505050565b600082516102b7818460208701610275565b9190910192915050565b60208152600082518060208401526102e0816040850160208701610275565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e1837ee2a5e3e46daae239d8e33725bdb2ac92b33d5244f5ae7544f9e9658be064736f6c634300080d0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b610027610022610067565b610100565b565b606061004e83836040518060600160405280602781526020016102f560279139610124565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50546001600160a01b031690565b6001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906100fb919061024c565b905090565b3660008037600080366000845af43d6000803e80801561011f573d6000f35b3d6000fd5b6060600080856001600160a01b03168560405161014191906102a5565b600060405180830381855af49150503d806000811461017c576040519150601f19603f3d011682016040523d82523d6000602084013e610181565b606091505b50915091506101928683838761019c565b9695505050505050565b60608315610210578251600003610209576001600160a01b0385163b6102095760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b508161021a565b61021a8383610222565b949350505050565b8151156102325781518083602001fd5b8060405162461bcd60e51b815260040161020091906102c1565b60006020828403121561025e57600080fd5b81516001600160a01b038116811461004e57600080fd5b60005b83811015610290578181015183820152602001610278565b8381111561029f576000848401525b50505050565b600082516102b7818460208701610275565b9190910192915050565b60208152600082518060208401526102e0816040850160208701610275565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220e1837ee2a5e3e46daae239d8e33725bdb2ac92b33d5244f5ae7544f9e9658be064736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042b29df8858121fafac5bd2487225fbe972f1eaa805cfeb74a8ce6784be5b84464736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122042b29df8858121fafac5bd2487225fbe972f1eaa805cfeb74a8ce6784be5b84464736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b2adfe7bc81a58a2a40a020a408f71785946afd343d6940099885382a9553b564736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b2adfe7bc81a58a2a40a020a408f71785946afd343d6940099885382a9553b564736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b3f9d15ba97fb69f16e34254c6a3d7387c7f0da0d33667d2ebeafcefdb8199a64736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208b3f9d15ba97fb69f16e34254c6a3d7387c7f0da0d33667d2ebeafcefdb8199a64736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfa180daadd7577892dd23a92f94613264d53e31a9dea0fac999d868b9e5972464736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220bfa180daadd7577892dd23a92f94613264d53e31a9dea0fac999d868b9e5972464736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220791aba9fd2d6ca7c0c90576681e4b0502910301e2fa33ac225d6670fed2d187164736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220791aba9fd2d6ca7c0c90576681e4b0502910301e2fa33ac225d6670fed2d187164736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a0f2d371d3902f9f97698ff62207f2be404c635a455462f7975038bd4ff06c2864736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a0f2d371d3902f9f97698ff62207f2be404c635a455462f7975038bd4ff06c2864736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208faabc20d0d4a719bebfb2204f11581102f75cbe492b9dabe75df40e26640b0264736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212208faabc20d0d4a719bebfb2204f11581102f75cbe492b9dabe75df40e26640b0264736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d29aa4630276ec2d362f51009f42de367181a9e9a4f354f2123aad436a259b2c64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220d29aa4630276ec2d362f51009f42de367181a9e9a4f354f2123aad436a259b2c64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a812934f9e8d0ef84e35958a125c7becc15b4e3f2a1f56df03bce6a1bfb8c6864736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209a812934f9e8d0ef84e35958a125c7becc15b4e3f2a1f56df03bce6a1bfb8c6864736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000bc104fa1e28b55e0005c74a91dd6b3f202b227c6abc94b269ade7db7eb296d64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122000bc104fa1e28b55e0005c74a91dd6b3f202b227c6abc94b269ade7db7eb296d64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}
{
"_format": "hh-sol-artifact-1",
"contractName": "EIP712",
"sourceName": "contracts/utils/cryptography/draft-EIP712.sol",
"abi": [],
"sourceName": "contracts/utils/cryptography/EIP712.sol",
"abi": [
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
}
],
"bytecode": "0x",

@@ -7,0 +73,0 @@ "deployedBytecode": "0x",

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f7201d3870410df66811991542cdce41c8c8a24bf9bfe1f1229014bd3b2ad564736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a1f7201d3870410df66811991542cdce41c8c8a24bf9bfe1f1229014bd3b2ad564736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f1247dbc9cc619113e0c5945f8c62202b8c4eb957dce30baa3239658a5019e5864736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f1247dbc9cc619113e0c5945f8c62202b8c4eb957dce30baa3239658a5019e5864736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea5d5626f9feb4085563794b3192178aeb493b9ac65998e687f4ad9f1083a9c964736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea5d5626f9feb4085563794b3192178aeb493b9ac65998e687f4ad9f1083a9c964736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074e69cd2a0d98d262dffa88e25191ecf000f74539d774ab9f6d72ba9c393e1b964736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122074e69cd2a0d98d262dffa88e25191ecf000f74539d774ab9f6d72ba9c393e1b964736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -330,6 +330,6 @@ {

],
"bytecode": "0x60806040523480156200001157600080fd5b506040516200169c3803806200169c833981016040819052620000349162000105565b6200003f8162000046565b506200022e565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001db565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b6000602080838503121562000118578182fd5b82516001600160401b03808211156200012f578384fd5b818501915085601f83011262000143578384fd5b81518181111562000158576200015862000218565b604051601f8201601f19908116603f0116810190838211818310171562000183576200018362000218565b8160405282815288868487010111156200019b578687fd5b8693505b82841015620001be57848401860151818501870152928501926200019f565b82841115620001cf57868684830101525b98975050505050505050565b600181811c90821680620001f057607f821691505b602082108114156200021257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61145e806200023e6000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957610087565b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610edd565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610fd1565b610223565b60405190151581526020016100a9565b6100e86100e3366004611010565b610277565b6040516100a99190611191565b610108610103366004610d9a565b61030b565b005b61011d610118366004610f06565b6103b4565b6040516100a99190611150565b610108610138366004610ea3565b610516565b6100c561014b366004610d68565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610e40565b61052c565b60006001600160a01b0383166101fd5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025457506001600160e01b031982166303a24d0760e21b145b8061026f57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b606060028054610286906112b7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b2906112b7565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b50505050509050919050565b6103136105c5565b6001600160a01b0316856001600160a01b0316148061033957506103398561014b6105c5565b6103a05760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016101f4565b6103ad85858585856105ca565b5050505050565b606081518351146104195760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f4565b6000835167ffffffffffffffff81111561044357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561046c578160200160208202803683370190505b50905060005b845181101561050e576104d385828151811061049e57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106104c657634e487b7160e01b600052603260045260246000fd5b602002602001015161018c565b8282815181106104f357634e487b7160e01b600052603260045260246000fd5b60209081029190910101526105078161131f565b9050610472565b509392505050565b6105286105216105c5565b83836107ce565b5050565b6105346105c5565b6001600160a01b0316856001600160a01b0316148061055a575061055a8561014b6105c5565b6105b85760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016101f4565b6103ad85858585856108af565b335b90565b815183511461062c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f4565b6001600160a01b0384166106525760405162461bcd60e51b81526004016101f4906111ec565b600061065c6105c5565b905060005b845181101561076057600085828151811061068c57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106106b857634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107085760405162461bcd60e51b81526004016101f490611231565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061074590849061129f565b92505081905550505050806107599061131f565b9050610661565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107b0929190611163565b60405180910390a46107c68187878787876109e0565b505050505050565b816001600160a01b0316836001600160a01b031614156108425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f4565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166108d55760405162461bcd60e51b81526004016101f4906111ec565b60006108df6105c5565b90506108f98187876108f088610b4b565b6103ad88610b4b565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561093a5760405162461bcd60e51b81526004016101f490611231565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061097790849061129f565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46109d7828888888888610ba4565b50505050505050565b6001600160a01b0384163b156107c65760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a2490899089908890889088906004016110ad565b602060405180830381600087803b158015610a3e57600080fd5b505af1925050508015610a6e575060408051601f3d908101601f19168201909252610a6b91810190610ff4565b60015b610b1b57610a7a611366565b806308c379a01415610ab45750610a8f61137d565b80610a9a5750610ab6565b8060405162461bcd60e51b81526004016101f49190611191565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f4565b6001600160e01b0319811663bc197c8160e01b146109d75760405162461bcd60e51b81526004016101f4906111a4565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b9357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156107c65760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610be8908990899088908890889060040161110b565b602060405180830381600087803b158015610c0257600080fd5b505af1925050508015610c32575060408051601f3d908101601f19168201909252610c2f91810190610ff4565b60015b610c3e57610a7a611366565b6001600160e01b0319811663f23a6e6160e01b146109d75760405162461bcd60e51b81526004016101f4906111a4565b80356001600160a01b038116811461027257600080fd5b600082601f830112610c95578081fd5b81356020610ca28261127b565b604051610caf82826112f2565b8381528281019150858301600585901b87018401881015610cce578586fd5b855b85811015610cec57813584529284019290840190600101610cd0565b5090979650505050505050565b600082601f830112610d09578081fd5b813567ffffffffffffffff811115610d2357610d23611350565b604051610d3a601f8301601f1916602001826112f2565b818152846020838601011115610d4e578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610d7a578182fd5b610d8383610c6e565b9150610d9160208401610c6e565b90509250929050565b600080600080600060a08688031215610db1578081fd5b610dba86610c6e565b9450610dc860208701610c6e565b9350604086013567ffffffffffffffff80821115610de4578283fd5b610df089838a01610c85565b94506060880135915080821115610e05578283fd5b610e1189838a01610c85565b93506080880135915080821115610e26578283fd5b50610e3388828901610cf9565b9150509295509295909350565b600080600080600060a08688031215610e57578081fd5b610e6086610c6e565b9450610e6e60208701610c6e565b93506040860135925060608601359150608086013567ffffffffffffffff811115610e97578182fd5b610e3388828901610cf9565b60008060408385031215610eb5578182fd5b610ebe83610c6e565b915060208301358015158114610ed2578182fd5b809150509250929050565b60008060408385031215610eef578182fd5b610ef883610c6e565b946020939093013593505050565b60008060408385031215610f18578182fd5b823567ffffffffffffffff80821115610f2f578384fd5b818501915085601f830112610f42578384fd5b81356020610f4f8261127b565b604051610f5c82826112f2565b8381528281019150858301600585901b870184018b1015610f7b578889fd5b8896505b84871015610fa457610f9081610c6e565b835260019690960195918301918301610f7f565b5096505086013592505080821115610fba578283fd5b50610fc785828601610c85565b9150509250929050565b600060208284031215610fe2578081fd5b8135610fed8161140f565b9392505050565b600060208284031215611005578081fd5b8151610fed8161140f565b600060208284031215611021578081fd5b5035919050565b6000815180845260208085019450808401835b838110156110575781518752958201959082019060010161103b565b509495945050505050565b60008151808452815b818110156110875760208185018101518683018201520161106b565b818111156110985782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a0604082018190526000906110d990830186611028565b82810360608401526110eb8186611028565b905082810360808401526110ff8185611062565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061114590830184611062565b979650505050505050565b600060208252610fed6020830184611028565b6000604082526111766040830185611028565b82810360208401526111888185611028565b95945050505050565b600060208252610fed6020830184611062565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b600067ffffffffffffffff82111561129557611295611350565b5060051b60200190565b600082198211156112b2576112b261133a565b500190565b600181811c908216806112cb57607f821691505b602082108114156112ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561131857611318611350565b6040525050565b60006000198214156113335761133361133a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156105c757600481823e5160e01c90565b600060443d101561138d576105c7565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113bf5750505050506105c7565b82850191508151818111156113d9575050505050506105c7565b843d87010160208285010111156113f5575050505050506105c7565b611404602082860101876112f2565b509094505050505090565b6001600160e01b03198116811461142557600080fd5b5056fea26469706673582212202ca16e1587bb28b1dcb9087fa3168bd3d172920a8ee3c52212fe3ff0b773621c64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957610087565b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610edd565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610fd1565b610223565b60405190151581526020016100a9565b6100e86100e3366004611010565b610277565b6040516100a99190611191565b610108610103366004610d9a565b61030b565b005b61011d610118366004610f06565b6103b4565b6040516100a99190611150565b610108610138366004610ea3565b610516565b6100c561014b366004610d68565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610e40565b61052c565b60006001600160a01b0383166101fd5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025457506001600160e01b031982166303a24d0760e21b145b8061026f57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b606060028054610286906112b7565b80601f01602080910402602001604051908101604052809291908181526020018280546102b2906112b7565b80156102ff5780601f106102d4576101008083540402835291602001916102ff565b820191906000526020600020905b8154815290600101906020018083116102e257829003601f168201915b50505050509050919050565b6103136105c5565b6001600160a01b0316856001600160a01b0316148061033957506103398561014b6105c5565b6103a05760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b60648201526084016101f4565b6103ad85858585856105ca565b5050505050565b606081518351146104195760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f4565b6000835167ffffffffffffffff81111561044357634e487b7160e01b600052604160045260246000fd5b60405190808252806020026020018201604052801561046c578160200160208202803683370190505b50905060005b845181101561050e576104d385828151811061049e57634e487b7160e01b600052603260045260246000fd5b60200260200101518583815181106104c657634e487b7160e01b600052603260045260246000fd5b602002602001015161018c565b8282815181106104f357634e487b7160e01b600052603260045260246000fd5b60209081029190910101526105078161131f565b9050610472565b509392505050565b6105286105216105c5565b83836107ce565b5050565b6105346105c5565b6001600160a01b0316856001600160a01b0316148061055a575061055a8561014b6105c5565b6105b85760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260448201526808185c1c1c9bdd995960ba1b60648201526084016101f4565b6103ad85858585856108af565b335b90565b815183511461062c5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f4565b6001600160a01b0384166106525760405162461bcd60e51b81526004016101f4906111ec565b600061065c6105c5565b905060005b845181101561076057600085828151811061068c57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060008583815181106106b857634e487b7160e01b600052603260045260246000fd5b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156107085760405162461bcd60e51b81526004016101f490611231565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061074590849061129f565b92505081905550505050806107599061131f565b9050610661565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516107b0929190611163565b60405180910390a46107c68187878787876109e0565b505050505050565b816001600160a01b0316836001600160a01b031614156108425760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f4565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166108d55760405162461bcd60e51b81526004016101f4906111ec565b60006108df6105c5565b90506108f98187876108f088610b4b565b6103ad88610b4b565b6000848152602081815260408083206001600160a01b038a1684529091529020548381101561093a5760405162461bcd60e51b81526004016101f490611231565b6000858152602081815260408083206001600160a01b038b811685529252808320878503905590881682528120805486929061097790849061129f565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46109d7828888888888610ba4565b50505050505050565b6001600160a01b0384163b156107c65760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190610a2490899089908890889088906004016110ad565b602060405180830381600087803b158015610a3e57600080fd5b505af1925050508015610a6e575060408051601f3d908101601f19168201909252610a6b91810190610ff4565b60015b610b1b57610a7a611366565b806308c379a01415610ab45750610a8f61137d565b80610a9a5750610ab6565b8060405162461bcd60e51b81526004016101f49190611191565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f4565b6001600160e01b0319811663bc197c8160e01b146109d75760405162461bcd60e51b81526004016101f4906111a4565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610b9357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b156107c65760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610be8908990899088908890889060040161110b565b602060405180830381600087803b158015610c0257600080fd5b505af1925050508015610c32575060408051601f3d908101601f19168201909252610c2f91810190610ff4565b60015b610c3e57610a7a611366565b6001600160e01b0319811663f23a6e6160e01b146109d75760405162461bcd60e51b81526004016101f4906111a4565b80356001600160a01b038116811461027257600080fd5b600082601f830112610c95578081fd5b81356020610ca28261127b565b604051610caf82826112f2565b8381528281019150858301600585901b87018401881015610cce578586fd5b855b85811015610cec57813584529284019290840190600101610cd0565b5090979650505050505050565b600082601f830112610d09578081fd5b813567ffffffffffffffff811115610d2357610d23611350565b604051610d3a601f8301601f1916602001826112f2565b818152846020838601011115610d4e578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215610d7a578182fd5b610d8383610c6e565b9150610d9160208401610c6e565b90509250929050565b600080600080600060a08688031215610db1578081fd5b610dba86610c6e565b9450610dc860208701610c6e565b9350604086013567ffffffffffffffff80821115610de4578283fd5b610df089838a01610c85565b94506060880135915080821115610e05578283fd5b610e1189838a01610c85565b93506080880135915080821115610e26578283fd5b50610e3388828901610cf9565b9150509295509295909350565b600080600080600060a08688031215610e57578081fd5b610e6086610c6e565b9450610e6e60208701610c6e565b93506040860135925060608601359150608086013567ffffffffffffffff811115610e97578182fd5b610e3388828901610cf9565b60008060408385031215610eb5578182fd5b610ebe83610c6e565b915060208301358015158114610ed2578182fd5b809150509250929050565b60008060408385031215610eef578182fd5b610ef883610c6e565b946020939093013593505050565b60008060408385031215610f18578182fd5b823567ffffffffffffffff80821115610f2f578384fd5b818501915085601f830112610f42578384fd5b81356020610f4f8261127b565b604051610f5c82826112f2565b8381528281019150858301600585901b870184018b1015610f7b578889fd5b8896505b84871015610fa457610f9081610c6e565b835260019690960195918301918301610f7f565b5096505086013592505080821115610fba578283fd5b50610fc785828601610c85565b9150509250929050565b600060208284031215610fe2578081fd5b8135610fed8161140f565b9392505050565b600060208284031215611005578081fd5b8151610fed8161140f565b600060208284031215611021578081fd5b5035919050565b6000815180845260208085019450808401835b838110156110575781518752958201959082019060010161103b565b509495945050505050565b60008151808452815b818110156110875760208185018101518683018201520161106b565b818111156110985782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0386811682528516602082015260a0604082018190526000906110d990830186611028565b82810360608401526110eb8186611028565b905082810360808401526110ff8185611062565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061114590830184611062565b979650505050505050565b600060208252610fed6020830184611028565b6000604082526111766040830185611028565b82810360208401526111888185611028565b95945050505050565b600060208252610fed6020830184611062565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b600067ffffffffffffffff82111561129557611295611350565b5060051b60200190565b600082198211156112b2576112b261133a565b500190565b600181811c908216806112cb57607f821691505b602082108114156112ec57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff8111828210171561131857611318611350565b6040525050565b60006000198214156113335761133361133a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156105c757600481823e5160e01c90565b600060443d101561138d576105c7565b6040516003193d81016004833e81513d67ffffffffffffffff81602484011181841117156113bf5750505050506105c7565b82850191508151818111156113d9575050505050506105c7565b843d87010160208285010111156113f5575050505050506105c7565b611404602082860101876112f2565b509094505050505090565b6001600160e01b03198116811461142557600080fd5b5056fea26469706673582212202ca16e1587bb28b1dcb9087fa3168bd3d172920a8ee3c52212fe3ff0b773621c64736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b50604051620015cb380380620015cb83398101604081905262000034916200011b565b6200003f8162000046565b5062000233565b80516200005b9060029060208401906200005f565b5050565b8280546200006d90620001f7565b90600052602060002090601f016020900481019282620000915760008555620000dc565b82601f10620000ac57805160ff1916838001178555620000dc565b82800160010185558215620000dc579182015b82811115620000dc578251825591602001919060010190620000bf565b50620000ea929150620000ee565b5090565b5b80821115620000ea5760008155600101620000ef565b634e487b7160e01b600052604160045260246000fd5b600060208083850312156200012f57600080fd5b82516001600160401b03808211156200014757600080fd5b818501915085601f8301126200015c57600080fd5b81518181111562000171576200017162000105565b604051601f8201601f19908116603f011681019083821181831017156200019c576200019c62000105565b816040528281528886848701011115620001b557600080fd5b600093505b82841015620001d95784840186015181850187015292850192620001ba565b82841115620001eb5760008684830101525b98975050505050505050565b600181811c908216806200020c57607f821691505b6020821081036200022d57634e487b7160e01b600052602260045260246000fd5b50919050565b61138880620002436000396000f3fe608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b3f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610b82565b610222565b60405190151581526020016100a9565b6100e86100e3366004610ba6565b610274565b6040516100a99190610c0c565b610108610103366004610d6b565b610308565b005b61011d610118366004610e15565b610354565b6040516100a99190610f1b565b610108610138366004610f2e565b61047e565b6100c561014b366004610f6a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610f9d565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611002565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611002565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061103c565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c1f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b8451811015610476576104498582815181106104225761042261108a565b602002602001015185838151811061043c5761043c61108a565b602002602001015161018c565b82828151811061045b5761045b61108a565b602090810291909101015261046f816110b6565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061103c565b61034d858585858561078f565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110cf565b3360005b845181101561064157600085828151811061057b5761057b61108a565b6020026020010151905060008583815181106105995761059961108a565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611114565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061062690849061115e565b925050819055505050508061063a906110b6565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610691929190611176565b60405180910390a46106a78187878787876108b9565b505050505050565b816001600160a01b0316836001600160a01b0316036107225760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b55760405162461bcd60e51b81526004016101f3906110cf565b3360006107c185610a1d565b905060006107ce85610a1d565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108115760405162461bcd60e51b81526004016101f390611114565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084e90849061115e565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108ae848a8a8a8a8a610a68565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fd90899089908890889088906004016111a4565b6020604051808303816000875af1925050508015610938575060408051601f3d908101601f1916820190925261093591810190611202565b60015b6109e45761094461121f565b806308c379a00361097d575061095861123b565b80610963575061097f565b8060405162461bcd60e51b81526004016101f39190610c0c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a145760405162461bcd60e51b81526004016101f3906112c5565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a5757610a5761108a565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610aac908990899088908890889060040161130d565b6020604051808303816000875af1925050508015610ae7575060408051601f3d908101601f19168201909252610ae491810190611202565b60015b610af35761094461121f565b6001600160e01b0319811663f23a6e6160e01b14610a145760405162461bcd60e51b81526004016101f3906112c5565b80356001600160a01b0381168114610b3a57600080fd5b919050565b60008060408385031215610b5257600080fd5b610b5b83610b23565b946020939093013593505050565b6001600160e01b031981168114610b7f57600080fd5b50565b600060208284031215610b9457600080fd5b8135610b9f81610b69565b9392505050565b600060208284031215610bb857600080fd5b5035919050565b6000815180845260005b81811015610be557602081850181015186830182015201610bc9565b81811115610bf7576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610b9f6020830184610bbf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c5b57610c5b610c1f565b6040525050565b600067ffffffffffffffff821115610c7c57610c7c610c1f565b5060051b60200190565b600082601f830112610c9757600080fd5b81356020610ca482610c62565b604051610cb18282610c35565b83815260059390931b8501820192828101915086841115610cd157600080fd5b8286015b84811015610cec5780358352918301918301610cd5565b509695505050505050565b600082601f830112610d0857600080fd5b813567ffffffffffffffff811115610d2257610d22610c1f565b604051610d39601f8301601f191660200182610c35565b818152846020838601011115610d4e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610d8357600080fd5b610d8c86610b23565b9450610d9a60208701610b23565b9350604086013567ffffffffffffffff80821115610db757600080fd5b610dc389838a01610c86565b94506060880135915080821115610dd957600080fd5b610de589838a01610c86565b93506080880135915080821115610dfb57600080fd5b50610e0888828901610cf7565b9150509295509295909350565b60008060408385031215610e2857600080fd5b823567ffffffffffffffff80821115610e4057600080fd5b818501915085601f830112610e5457600080fd5b81356020610e6182610c62565b604051610e6e8282610c35565b83815260059390931b8501820192828101915089841115610e8e57600080fd5b948201945b83861015610eb357610ea486610b23565b82529482019490820190610e93565b96505086013592505080821115610ec957600080fd5b50610ed685828601610c86565b9150509250929050565b600081518084526020808501945080840160005b83811015610f1057815187529582019590820190600101610ef4565b509495945050505050565b602081526000610b9f6020830184610ee0565b60008060408385031215610f4157600080fd5b610f4a83610b23565b915060208301358015158114610f5f57600080fd5b809150509250929050565b60008060408385031215610f7d57600080fd5b610f8683610b23565b9150610f9460208401610b23565b90509250929050565b600080600080600060a08688031215610fb557600080fd5b610fbe86610b23565b9450610fcc60208701610b23565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff657600080fd5b610e0888828901610cf7565b600181811c9082168061101657607f821691505b60208210810361103657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110c8576110c86110a0565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611171576111716110a0565b500190565b6040815260006111896040830185610ee0565b828103602084015261119b8185610ee0565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111d090830186610ee0565b82810360608401526111e28186610ee0565b905082810360808401526111f68185610bbf565b98975050505050505050565b60006020828403121561121457600080fd5b8151610b9f81610b69565b600060033d11156112385760046000803e5060005160e01c5b90565b600060443d10156112495790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561127957505050505090565b82850191508151818111156112915750505050505090565b843d87010160208285010111156112ab5750505050505090565b6112ba60208286010187610c35565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061134790830184610bbf565b97965050505050505056fea2646970667358221220a690293c88d6344935ce74699232e93a05c2c54bc9e019a4c16e196e6916539864736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100875760003560e01c80634e1273f41161005b5780634e1273f41461010a578063a22cb4651461012a578063e985e9c51461013d578063f242432a1461017957600080fd5b8062fdd58e1461008c57806301ffc9a7146100b25780630e89341c146100d55780632eb2c2d6146100f5575b600080fd5b61009f61009a366004610b3f565b61018c565b6040519081526020015b60405180910390f35b6100c56100c0366004610b82565b610222565b60405190151581526020016100a9565b6100e86100e3366004610ba6565b610274565b6040516100a99190610c0c565b610108610103366004610d6b565b610308565b005b61011d610118366004610e15565b610354565b6040516100a99190610f1b565b610108610138366004610f2e565b61047e565b6100c561014b366004610f6a565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b610108610187366004610f9d565b61048d565b60006001600160a01b0383166101fc5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b506000908152602081815260408083206001600160a01b03949094168352929052205490565b60006001600160e01b03198216636cdb3d1360e11b148061025357506001600160e01b031982166303a24d0760e21b145b8061026e57506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606002805461028390611002565b80601f01602080910402602001604051908101604052809291908181526020018280546102af90611002565b80156102fc5780601f106102d1576101008083540402835291602001916102fc565b820191906000526020600020905b8154815290600101906020018083116102df57829003601f168201915b50505050509050919050565b6001600160a01b0385163314806103245750610324853361014b565b6103405760405162461bcd60e51b81526004016101f39061103c565b61034d85858585856104d2565b5050505050565b606081518351146103b95760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b60648201526084016101f3565b6000835167ffffffffffffffff8111156103d5576103d5610c1f565b6040519080825280602002602001820160405280156103fe578160200160208202803683370190505b50905060005b8451811015610476576104498582815181106104225761042261108a565b602002602001015185838151811061043c5761043c61108a565b602002602001015161018c565b82828151811061045b5761045b61108a565b602090810291909101015261046f816110b6565b9050610404565b509392505050565b6104893383836106af565b5050565b6001600160a01b0385163314806104a957506104a9853361014b565b6104c55760405162461bcd60e51b81526004016101f39061103c565b61034d858585858561078f565b81518351146105345760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084016101f3565b6001600160a01b03841661055a5760405162461bcd60e51b81526004016101f3906110cf565b3360005b845181101561064157600085828151811061057b5761057b61108a565b6020026020010151905060008583815181106105995761059961108a565b602090810291909101810151600084815280835260408082206001600160a01b038e1683529093529190912054909150818110156105e95760405162461bcd60e51b81526004016101f390611114565b6000838152602081815260408083206001600160a01b038e8116855292528083208585039055908b1682528120805484929061062690849061115e565b925050819055505050508061063a906110b6565b905061055e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610691929190611176565b60405180910390a46106a78187878787876108b9565b505050505050565b816001600160a01b0316836001600160a01b0316036107225760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b60648201526084016101f3565b6001600160a01b03838116600081815260016020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6001600160a01b0384166107b55760405162461bcd60e51b81526004016101f3906110cf565b3360006107c185610a1d565b905060006107ce85610a1d565b90506000868152602081815260408083206001600160a01b038c168452909152902054858110156108115760405162461bcd60e51b81526004016101f390611114565b6000878152602081815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061084e90849061115e565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46108ae848a8a8a8a8a610a68565b505050505050505050565b6001600160a01b0384163b156106a75760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906108fd90899089908890889088906004016111a4565b6020604051808303816000875af1925050508015610938575060408051601f3d908101601f1916820190925261093591810190611202565b60015b6109e45761094461121f565b806308c379a00361097d575061095861123b565b80610963575061097f565b8060405162461bcd60e51b81526004016101f39190610c0c565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b60648201526084016101f3565b6001600160e01b0319811663bc197c8160e01b14610a145760405162461bcd60e51b81526004016101f3906112c5565b50505050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610a5757610a5761108a565b602090810291909101015292915050565b6001600160a01b0384163b156106a75760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190610aac908990899088908890889060040161130d565b6020604051808303816000875af1925050508015610ae7575060408051601f3d908101601f19168201909252610ae491810190611202565b60015b610af35761094461121f565b6001600160e01b0319811663f23a6e6160e01b14610a145760405162461bcd60e51b81526004016101f3906112c5565b80356001600160a01b0381168114610b3a57600080fd5b919050565b60008060408385031215610b5257600080fd5b610b5b83610b23565b946020939093013593505050565b6001600160e01b031981168114610b7f57600080fd5b50565b600060208284031215610b9457600080fd5b8135610b9f81610b69565b9392505050565b600060208284031215610bb857600080fd5b5035919050565b6000815180845260005b81811015610be557602081850181015186830182015201610bc9565b81811115610bf7576000602083870101525b50601f01601f19169290920160200192915050565b602081526000610b9f6020830184610bbf565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715610c5b57610c5b610c1f565b6040525050565b600067ffffffffffffffff821115610c7c57610c7c610c1f565b5060051b60200190565b600082601f830112610c9757600080fd5b81356020610ca482610c62565b604051610cb18282610c35565b83815260059390931b8501820192828101915086841115610cd157600080fd5b8286015b84811015610cec5780358352918301918301610cd5565b509695505050505050565b600082601f830112610d0857600080fd5b813567ffffffffffffffff811115610d2257610d22610c1f565b604051610d39601f8301601f191660200182610c35565b818152846020838601011115610d4e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215610d8357600080fd5b610d8c86610b23565b9450610d9a60208701610b23565b9350604086013567ffffffffffffffff80821115610db757600080fd5b610dc389838a01610c86565b94506060880135915080821115610dd957600080fd5b610de589838a01610c86565b93506080880135915080821115610dfb57600080fd5b50610e0888828901610cf7565b9150509295509295909350565b60008060408385031215610e2857600080fd5b823567ffffffffffffffff80821115610e4057600080fd5b818501915085601f830112610e5457600080fd5b81356020610e6182610c62565b604051610e6e8282610c35565b83815260059390931b8501820192828101915089841115610e8e57600080fd5b948201945b83861015610eb357610ea486610b23565b82529482019490820190610e93565b96505086013592505080821115610ec957600080fd5b50610ed685828601610c86565b9150509250929050565b600081518084526020808501945080840160005b83811015610f1057815187529582019590820190600101610ef4565b509495945050505050565b602081526000610b9f6020830184610ee0565b60008060408385031215610f4157600080fd5b610f4a83610b23565b915060208301358015158114610f5f57600080fd5b809150509250929050565b60008060408385031215610f7d57600080fd5b610f8683610b23565b9150610f9460208401610b23565b90509250929050565b600080600080600060a08688031215610fb557600080fd5b610fbe86610b23565b9450610fcc60208701610b23565b93506040860135925060608601359150608086013567ffffffffffffffff811115610ff657600080fd5b610e0888828901610cf7565b600181811c9082168061101657607f821691505b60208210810361103657634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016110c8576110c86110a0565b5060010190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60008219821115611171576111716110a0565b500190565b6040815260006111896040830185610ee0565b828103602084015261119b8185610ee0565b95945050505050565b6001600160a01b0386811682528516602082015260a0604082018190526000906111d090830186610ee0565b82810360608401526111e28186610ee0565b905082810360808401526111f68185610bbf565b98975050505050505050565b60006020828403121561121457600080fd5b8151610b9f81610b69565b600060033d11156112385760046000803e5060005160e01c5b90565b600060443d10156112495790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561127957505050505090565b82850191508151818111156112915750505050505090565b843d87010160208285010111156112ab5750505050505090565b6112ba60208286010187610c35565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a06080820181905260009061134790830184610bbf565b97965050505050505056fea2646970667358221220a690293c88d6344935ce74699232e93a05c2c54bc9e019a4c16e196e6916539864736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -104,6 +104,6 @@ {

],
"bytecode": "0x608060405234801561001057600080fd5b506103b8806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b61005961005436600461030c565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610203565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b43660046102a9565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b80356001600160a01b03811681146100f957600080fd5b600082601f830112610125578081fd5b8135602067ffffffffffffffff8211156101415761014161036c565b8160051b61015082820161033b565b83815282810190868401838801850189101561016a578687fd5b8693505b8584101561018c57803583526001939093019291840191840161016e565b50979650505050505050565b600082601f8301126101a8578081fd5b813567ffffffffffffffff8111156101c2576101c261036c565b6101d5601f8201601f191660200161033b565b8181528460208386010111156101e9578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a0868803121561021a578081fd5b610223866100fe565b9450610231602087016100fe565b9350604086013567ffffffffffffffff8082111561024d578283fd5b61025989838a01610115565b9450606088013591508082111561026e578283fd5b61027a89838a01610115565b9350608088013591508082111561028f578283fd5b5061029c88828901610198565b9150509295509295909350565b600080600080600060a086880312156102c0578081fd5b6102c9866100fe565b94506102d7602087016100fe565b93506040860135925060608601359150608086013567ffffffffffffffff811115610300578182fd5b61029c88828901610198565b60006020828403121561031d578081fd5b81356001600160e01b031981168114610334578182fd5b9392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156103645761036461036c565b604052919050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220727ac1799c29a2d5a7ca78c36651ff5bc536855977f931bca3744268a6cb25cf64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b61005961005436600461030c565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610203565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b43660046102a9565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b80356001600160a01b03811681146100f957600080fd5b600082601f830112610125578081fd5b8135602067ffffffffffffffff8211156101415761014161036c565b8160051b61015082820161033b565b83815282810190868401838801850189101561016a578687fd5b8693505b8584101561018c57803583526001939093019291840191840161016e565b50979650505050505050565b600082601f8301126101a8578081fd5b813567ffffffffffffffff8111156101c2576101c261036c565b6101d5601f8201601f191660200161033b565b8181528460208386010111156101e9578283fd5b816020850160208301379081016020019190915292915050565b600080600080600060a0868803121561021a578081fd5b610223866100fe565b9450610231602087016100fe565b9350604086013567ffffffffffffffff8082111561024d578283fd5b61025989838a01610115565b9450606088013591508082111561026e578283fd5b61027a89838a01610115565b9350608088013591508082111561028f578283fd5b5061029c88828901610198565b9150509295509295909350565b600080600080600060a086880312156102c0578081fd5b6102c9866100fe565b94506102d7602087016100fe565b93506040860135925060608601359150608086013567ffffffffffffffff811115610300578182fd5b61029c88828901610198565b60006020828403121561031d578081fd5b81356001600160e01b031981168114610334578182fd5b9392505050565b604051601f8201601f1916810167ffffffffffffffff811182821017156103645761036461036c565b604052919050565b634e487b7160e01b600052604160045260246000fdfea2646970667358221220727ac1799c29a2d5a7ca78c36651ff5bc536855977f931bca3744268a6cb25cf64736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b506103c5806100206000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea26469706673582212209e59a98cec3bcfd01c6cf17362bae2a8fe30630fad8342f10ae79d6ad274689d64736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100415760003560e01c806301ffc9a714610046578063bc197c811461006e578063f23a6e61146100a6575b600080fd5b6100596100543660046100fc565b6100c5565b60405190151581526020015b60405180910390f35b61008d61007c366004610280565b63bc197c8160e01b95945050505050565b6040516001600160e01b03199091168152602001610065565b61008d6100b436600461032a565b63f23a6e6160e01b95945050505050565b60006001600160e01b03198216630271189760e51b14806100f657506301ffc9a760e01b6001600160e01b03198316145b92915050565b60006020828403121561010e57600080fd5b81356001600160e01b03198116811461012657600080fd5b9392505050565b80356001600160a01b038116811461014457600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561018857610188610149565b604052919050565b600082601f8301126101a157600080fd5b8135602067ffffffffffffffff8211156101bd576101bd610149565b8160051b6101cc82820161015f565b92835284810182019282810190878511156101e657600080fd5b83870192505b84831015610205578235825291830191908301906101ec565b979650505050505050565b600082601f83011261022157600080fd5b813567ffffffffffffffff81111561023b5761023b610149565b61024e601f8201601f191660200161015f565b81815284602083860101111561026357600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a0868803121561029857600080fd5b6102a18661012d565b94506102af6020870161012d565b9350604086013567ffffffffffffffff808211156102cc57600080fd5b6102d889838a01610190565b945060608801359150808211156102ee57600080fd5b6102fa89838a01610190565b9350608088013591508082111561031057600080fd5b5061031d88828901610210565b9150509295509295909350565b600080600080600060a0868803121561034257600080fd5b61034b8661012d565b94506103596020870161012d565b93506040860135925060608601359150608086013567ffffffffffffffff81111561038357600080fd5b61031d8882890161021056fea26469706673582212209e59a98cec3bcfd01c6cf17362bae2a8fe30630fad8342f10ae79d6ad274689d64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -739,6 +739,6 @@ {

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002e3938038062002e398339810160408190526200003491620002d2565b806200004081620000b8565b506005805460ff19169055620000596000335b620000d1565b620000857f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000053565b620000b17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000053565b50620003fb565b8051620000cd9060049060208401906200022c565b5050565b620000cd8282620000ee82826200011a60201b62000b1d1760201c565b60008281526001602090815260409091206200011591839062000ba1620001ba821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cd576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001763390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d1836001600160a01b038416620001da565b90505b92915050565b60008181526001830160205260408120546200022357508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d4565b506000620001d4565b8280546200023a90620003a8565b90600052602060002090601f0160209004810192826200025e5760008555620002a9565b82601f106200027957805160ff1916838001178555620002a9565b82800160010185558215620002a9579182015b82811115620002a95782518255916020019190600101906200028c565b50620002b7929150620002bb565b5090565b5b80821115620002b75760008155600101620002bc565b60006020808385031215620002e5578182fd5b82516001600160401b0380821115620002fc578384fd5b818501915085601f83011262000310578384fd5b815181811115620003255762000325620003e5565b604051601f8201601f19908116603f01168101908382118183101715620003505762000350620003e5565b81604052828152888684870101111562000368578687fd5b8693505b828410156200038b57848401860151818501870152928501926200036c565b828411156200039c57868684830101525b98975050505050505050565b600181811c90821680620003bd57607f821691505b60208210811415620003df57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b612a2e806200040b6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610355578063e985e9c51461037c578063f242432a146103b8578063f5298aca146103cb57610172565b8063ca15c87314610308578063d53913931461031b578063d547741f1461034257610172565b8063731133e9146102945780638456cb59146102a75780639010d07c146102af57806391d14854146102da578063a217fddf146102ed578063a22cb465146102f557610172565b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028157610172565b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004612167565b6103de565b6040519081526020015b60405180910390f35b6101b06101ab36600461233b565b61047a565b6040519015158152602001610194565b6101d36101ce3660046122e0565b61048d565b6040516101949190612532565b6101f36101ee366004612098565b610521565b005b61018a6102033660046122e0565b60009081526020819052604090206001015490565b6101f3610226366004611f1e565b610579565b6101f36102393660046122f8565b610610565b6101f361024c3660046122f8565b61063c565b6101f36106ba565b61026c610267366004612215565b610760565b60405161019491906124f1565b6101b06108c2565b6101f361028f366004612027565b6108cc565b6101f36102a23660046121c2565b61090f565b6101f3610961565b6102c26102bd36600461231a565b610a05565b6040516001600160a01b039091168152602001610194565b6101b06102e83660046122f8565b610a24565b61018a600081565b6101f361030336600461212d565b610a4d565b61018a6103163660046122e0565b610a58565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f36103503660046122f8565b610a6f565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038a366004611eec565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c6366004611fc4565b610a95565b6101f36103d9366004612190565b610ada565b60006001600160a01b03831661044f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048582610bb6565b90505b919050565b60606004805461049c90612887565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890612887565b80156105155780601f106104ea57610100808354040283529160200191610515565b820191906000526020600020905b8154815290600101906020018083116104f857829003601f168201915b50505050509050919050565b61054b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336102e8565b6105675760405162461bcd60e51b8152600401610446906126a2565b61057384848484610bf6565b50505050565b6001600160a01b0385163314806105955750610595853361038a565b6105fc5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610446565b6106098585858585610d6d565b5050505050565b60008281526020819052604090206001015461062d81335b610f36565b6106378383610f9a565b505050565b6001600160a01b03811633146106ac5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610446565b6106b68282610fbc565b5050565b6106e47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336102e8565b6107565760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610446565b61075e610fde565b565b606081518351146107c55760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610446565b6000835167ffffffffffffffff8111156107ef57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610818578160200160208202803683370190505b50905060005b84518110156108ba5761087f85828151811061084a57634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061087257634e487b7160e01b600052603260045260246000fd5b60200260200101516103de565b82828151811061089f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101526108b3816128ef565b905061081e565b509392505050565b60055460ff165b90565b6001600160a01b0383163314806108e857506108e8833361038a565b6109045760405162461bcd60e51b8152600401610446906125d1565b610637838383611073565b6109397f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336102e8565b6109555760405162461bcd60e51b8152600401610446906126a2565b61057384848484611220565b61098b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336102e8565b6109fd5760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610446565b61075e6112f8565b6000828152600160205260408120610a1d9083611375565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106b6338383611381565b600081815260016020526040812061048590611462565b600082815260208190526040902060010154610a8b8133610628565b6106378383610fbc565b6001600160a01b038516331480610ab15750610ab1853361038a565b610acd5760405162461bcd60e51b8152600401610446906125d1565b610609858585858561146c565b6001600160a01b038316331480610af65750610af6833361038a565b610b125760405162461bcd60e51b8152600401610446906125d1565b61063783838361158d565b610b278282610a24565b6106b6576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610b5d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a1d836001600160a01b038416611692565b60006001600160e01b03198216636cdb3d1360e11b1480610be757506001600160e01b031982166303a24d0760e21b145b806104855750610485826116e1565b6001600160a01b038416610c1c5760405162461bcd60e51b815260040161044690612791565b8151835114610c3d5760405162461bcd60e51b815260040161044690612749565b33610c4d81600087878787611706565b60005b8451811015610d0557838181518110610c7957634e487b7160e01b600052603260045260246000fd5b602002602001015160026000878481518110610ca557634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ced91906127f6565b90915550819050610cfd816128ef565b915050610c50565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d56929190612504565b60405180910390a461060981600087878787611714565b8151835114610d8e5760405162461bcd60e51b815260040161044690612749565b6001600160a01b038416610db45760405162461bcd60e51b81526004016104469061261a565b33610dc3818787878787611706565b60005b8451811015610ec8576000858281518110610df157634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110610e1d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610e6e5760405162461bcd60e51b8152600401610446906126ff565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ead9084906127f6565b9250508190555050505080610ec1906128ef565b9050610dc6565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f18929190612504565b60405180910390a4610f2e818787878787611714565b505050505050565b610f408282610a24565b6106b657610f58816001600160a01b0316601461187f565b610f6383602061187f565b604051602001610f749291906123d9565b60408051601f198184030181529082905262461bcd60e51b825261044691600401612532565b610fa48282610b1d565b60008281526001602052604090206106379082610ba1565b610fc68282611a61565b60008281526001602052604090206106379082611ac6565b610fe66108c2565b6110295760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610446565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166110995760405162461bcd60e51b81526004016104469061265f565b80518251146110ba5760405162461bcd60e51b815260040161044690612749565b60003390506110dd81856000868660405180602001604052806000815250611706565b60005b83518110156111c157600084828151811061110b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061113757634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156111885760405162461bcd60e51b81526004016104469061258d565b60009283526002602090815260408085206001600160a01b038b16865290915290922091039055806111b9816128ef565b9150506110e0565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611212929190612504565b60405180910390a450505050565b6001600160a01b0384166112465760405162461bcd60e51b815260040161044690612791565b336112668160008761125788611adb565b61126088611adb565b87611706565b60008481526002602090815260408083206001600160a01b0389168452909152812080548592906112989084906127f6565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461060981600087878787611b34565b6113006108c2565b156113405760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610446565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110563390565b6000610a1d8383611bfe565b816001600160a01b0316836001600160a01b031614156113f55760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610446565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610485825490565b6001600160a01b0384166114925760405162461bcd60e51b81526004016104469061261a565b336114a281878761125788611adb565b60008481526002602090815260408083206001600160a01b038a168452909152902054838110156114e55760405162461bcd60e51b8152600401610446906126ff565b60008581526002602090815260408083206001600160a01b038b81168552925280832087850390559088168252812080548692906115249084906127f6565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611584828888888888611b34565b50505050505050565b6001600160a01b0383166115b35760405162461bcd60e51b81526004016104469061265f565b336115e2818560006115c487611adb565b6115cd87611adb565b60405180602001604052806000815250611706565b60008381526002602090815260408083206001600160a01b0388168452909152902054828110156116255760405162461bcd60e51b81526004016104469061258d565b60008481526002602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b60008181526001830160205260408120546116d957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b60006001600160e01b03198216635a05180f60e01b1480610485575061048582611c36565b610f2e868686868686611c6b565b6001600160a01b0384163b15610f2e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611758908990899088908890889060040161244e565b602060405180830381600087803b15801561177257600080fd5b505af19250505080156117a2575060408051601f3d908101601f1916820190925261179f91810190612357565b60015b61184f576117ae612936565b806308c379a014156117e857506117c361294d565b806117ce57506117ea565b8060405162461bcd60e51b81526004016104469190612532565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610446565b6001600160e01b0319811663bc197c8160e01b146115845760405162461bcd60e51b815260040161044690612545565b6060600061188e83600261280e565b6118999060026127f6565b67ffffffffffffffff8111156118bf57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156118e9576020820181803683370190505b509050600360fc1b8160008151811061191257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061194f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061197384600261280e565b61197e9060016127f6565b90505b6001811115611a12576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119c057634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106119e457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611a0b81612870565b9050611981565b508315610a1d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610446565b611a6b8282610a24565b156106b6576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a1d836001600160a01b038416611cd5565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611b2357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b15610f2e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b7890899089908890889088906004016124ac565b602060405180830381600087803b158015611b9257600080fd5b505af1925050508015611bc2575060408051601f3d908101601f19168201909252611bbf91810190612357565b60015b611bce576117ae612936565b6001600160e01b0319811663f23a6e6160e01b146115845760405162461bcd60e51b815260040161044690612545565b6000826000018281548110611c2357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061048557506301ffc9a760e01b6001600160e01b0319831614610485565b611c736108c2565b15610f2e5760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610446565b60008181526001830160205260408120548015611de8576000611cf960018361282d565b8554909150600090611d0d9060019061282d565b9050818114611d8e576000866000018281548110611d3b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611d6c57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611dad57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610474565b6000915050610474565b80356001600160a01b038116811461048857600080fd5b600082601f830112611e19578081fd5b81356020611e26826127d2565b604051611e3382826128c2565b8381528281019150858301600585901b87018401881015611e52578586fd5b855b85811015611e7057813584529284019290840190600101611e54565b5090979650505050505050565b600082601f830112611e8d578081fd5b813567ffffffffffffffff811115611ea757611ea7612920565b604051611ebe601f8301601f1916602001826128c2565b818152846020838601011115611ed2578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215611efe578182fd5b611f0783611df2565b9150611f1560208401611df2565b90509250929050565b600080600080600060a08688031215611f35578081fd5b611f3e86611df2565b9450611f4c60208701611df2565b9350604086013567ffffffffffffffff80821115611f68578283fd5b611f7489838a01611e09565b94506060880135915080821115611f89578283fd5b611f9589838a01611e09565b93506080880135915080821115611faa578283fd5b50611fb788828901611e7d565b9150509295509295909350565b600080600080600060a08688031215611fdb578081fd5b611fe486611df2565b9450611ff260208701611df2565b93506040860135925060608601359150608086013567ffffffffffffffff81111561201b578182fd5b611fb788828901611e7d565b60008060006060848603121561203b578283fd5b61204484611df2565b9250602084013567ffffffffffffffff80821115612060578384fd5b61206c87838801611e09565b93506040860135915080821115612081578283fd5b5061208e86828701611e09565b9150509250925092565b600080600080608085870312156120ad578384fd5b6120b685611df2565b9350602085013567ffffffffffffffff808211156120d2578485fd5b6120de88838901611e09565b945060408701359150808211156120f3578384fd5b6120ff88838901611e09565b93506060870135915080821115612114578283fd5b5061212187828801611e7d565b91505092959194509250565b6000806040838503121561213f578182fd5b61214883611df2565b91506020830135801515811461215c578182fd5b809150509250929050565b60008060408385031215612179578182fd5b61218283611df2565b946020939093013593505050565b6000806000606084860312156121a4578081fd5b6121ad84611df2565b95602085013595506040909401359392505050565b600080600080608085870312156121d7578182fd5b6121e085611df2565b93506020850135925060408501359150606085013567ffffffffffffffff811115612209578182fd5b61212187828801611e7d565b60008060408385031215612227578182fd5b823567ffffffffffffffff8082111561223e578384fd5b818501915085601f830112612251578384fd5b8135602061225e826127d2565b60405161226b82826128c2565b8381528281019150858301600585901b870184018b101561228a578889fd5b8896505b848710156122b35761229f81611df2565b83526001969096019591830191830161228e565b50965050860135925050808211156122c9578283fd5b506122d685828601611e09565b9150509250929050565b6000602082840312156122f1578081fd5b5035919050565b6000806040838503121561230a578182fd5b82359150611f1560208401611df2565b6000806040838503121561232c578182fd5b50508035926020909101359150565b60006020828403121561234c578081fd5b8135610a1d816129df565b600060208284031215612368578081fd5b8151610a1d816129df565b6000815180845260208085019450808401835b838110156123a257815187529582019590820190600101612386565b509495945050505050565b600081518084526123c5816020860160208601612844565b601f01601f19169290920160200192915050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351612411816017850160208801612844565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612442816028840160208801612844565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061247a90830186612373565b828103606084015261248c8186612373565b905082810360808401526124a081856123ad565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906124e6908301846123ad565b979650505050505050565b600060208252610a1d6020830184612373565b6000604082526125176040830185612373565b82810360208401526125298185612373565b95945050505050565b600060208252610a1d60208301846123ad565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b600067ffffffffffffffff8211156127ec576127ec612920565b5060051b60200190565b600082198211156128095761280961290a565b500190565b60008160001904831182151516156128285761282861290a565b500290565b60008282101561283f5761283f61290a565b500390565b60005b8381101561285f578181015183820152602001612847565b838111156105735750506000910152565b60008161287f5761287f61290a565b506000190190565b600181811c9082168061289b57607f821691505b602082108114156128bc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff811182821017156128e8576128e8612920565b6040525050565b60006000198214156129035761290361290a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156108c957600481823e5160e01c90565b600060443d101561295d576108c9565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561298f5750505050506108c9565b82850191508151818111156129a9575050505050506108c9565b843d87010160208285010111156129c5575050505050506108c9565b6129d4602082860101876128c2565b509094505050505090565b6001600160e01b0319811681146129f557600080fd5b5056fea2646970667358221220b10f48e828786bd2b195dc403b51d46fbc3f15ee9119045cd15e6408652d342f64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610355578063e985e9c51461037c578063f242432a146103b8578063f5298aca146103cb57610172565b8063ca15c87314610308578063d53913931461031b578063d547741f1461034257610172565b8063731133e9146102945780638456cb59146102a75780639010d07c146102af57806391d14854146102da578063a217fddf146102ed578063a22cb465146102f557610172565b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028157610172565b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004612167565b6103de565b6040519081526020015b60405180910390f35b6101b06101ab36600461233b565b61047a565b6040519015158152602001610194565b6101d36101ce3660046122e0565b61048d565b6040516101949190612532565b6101f36101ee366004612098565b610521565b005b61018a6102033660046122e0565b60009081526020819052604090206001015490565b6101f3610226366004611f1e565b610579565b6101f36102393660046122f8565b610610565b6101f361024c3660046122f8565b61063c565b6101f36106ba565b61026c610267366004612215565b610760565b60405161019491906124f1565b6101b06108c2565b6101f361028f366004612027565b6108cc565b6101f36102a23660046121c2565b61090f565b6101f3610961565b6102c26102bd36600461231a565b610a05565b6040516001600160a01b039091168152602001610194565b6101b06102e83660046122f8565b610a24565b61018a600081565b6101f361030336600461212d565b610a4d565b61018a6103163660046122e0565b610a58565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f36103503660046122f8565b610a6f565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038a366004611eec565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c6366004611fc4565b610a95565b6101f36103d9366004612190565b610ada565b60006001600160a01b03831661044f5760405162461bcd60e51b815260206004820152602b60248201527f455243313135353a2062616c616e636520717565727920666f7220746865207a60448201526a65726f206164647265737360a81b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061048582610bb6565b90505b919050565b60606004805461049c90612887565b80601f01602080910402602001604051908101604052809291908181526020018280546104c890612887565b80156105155780601f106104ea57610100808354040283529160200191610515565b820191906000526020600020905b8154815290600101906020018083116104f857829003601f168201915b50505050509050919050565b61054b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336102e8565b6105675760405162461bcd60e51b8152600401610446906126a2565b61057384848484610bf6565b50505050565b6001600160a01b0385163314806105955750610595853361038a565b6105fc5760405162461bcd60e51b815260206004820152603260248201527f455243313135353a207472616e736665722063616c6c6572206973206e6f74206044820152711bdddb995c881b9bdc88185c1c1c9bdd995960721b6064820152608401610446565b6106098585858585610d6d565b5050505050565b60008281526020819052604090206001015461062d81335b610f36565b6106378383610f9a565b505050565b6001600160a01b03811633146106ac5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610446565b6106b68282610fbc565b5050565b6106e47f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336102e8565b6107565760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610446565b61075e610fde565b565b606081518351146107c55760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610446565b6000835167ffffffffffffffff8111156107ef57634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610818578160200160208202803683370190505b50905060005b84518110156108ba5761087f85828151811061084a57634e487b7160e01b600052603260045260246000fd5b602002602001015185838151811061087257634e487b7160e01b600052603260045260246000fd5b60200260200101516103de565b82828151811061089f57634e487b7160e01b600052603260045260246000fd5b60209081029190910101526108b3816128ef565b905061081e565b509392505050565b60055460ff165b90565b6001600160a01b0383163314806108e857506108e8833361038a565b6109045760405162461bcd60e51b8152600401610446906125d1565b610637838383611073565b6109397f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336102e8565b6109555760405162461bcd60e51b8152600401610446906126a2565b61057384848484611220565b61098b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336102e8565b6109fd5760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610446565b61075e6112f8565b6000828152600160205260408120610a1d9083611375565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106b6338383611381565b600081815260016020526040812061048590611462565b600082815260208190526040902060010154610a8b8133610628565b6106378383610fbc565b6001600160a01b038516331480610ab15750610ab1853361038a565b610acd5760405162461bcd60e51b8152600401610446906125d1565b610609858585858561146c565b6001600160a01b038316331480610af65750610af6833361038a565b610b125760405162461bcd60e51b8152600401610446906125d1565b61063783838361158d565b610b278282610a24565b6106b6576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610b5d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610a1d836001600160a01b038416611692565b60006001600160e01b03198216636cdb3d1360e11b1480610be757506001600160e01b031982166303a24d0760e21b145b806104855750610485826116e1565b6001600160a01b038416610c1c5760405162461bcd60e51b815260040161044690612791565b8151835114610c3d5760405162461bcd60e51b815260040161044690612749565b33610c4d81600087878787611706565b60005b8451811015610d0557838181518110610c7957634e487b7160e01b600052603260045260246000fd5b602002602001015160026000878481518110610ca557634e487b7160e01b600052603260045260246000fd5b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610ced91906127f6565b90915550819050610cfd816128ef565b915050610c50565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610d56929190612504565b60405180910390a461060981600087878787611714565b8151835114610d8e5760405162461bcd60e51b815260040161044690612749565b6001600160a01b038416610db45760405162461bcd60e51b81526004016104469061261a565b33610dc3818787878787611706565b60005b8451811015610ec8576000858281518110610df157634e487b7160e01b600052603260045260246000fd5b602002602001015190506000858381518110610e1d57634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610e6e5760405162461bcd60e51b8152600401610446906126ff565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ead9084906127f6565b9250508190555050505080610ec1906128ef565b9050610dc6565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610f18929190612504565b60405180910390a4610f2e818787878787611714565b505050505050565b610f408282610a24565b6106b657610f58816001600160a01b0316601461187f565b610f6383602061187f565b604051602001610f749291906123d9565b60408051601f198184030181529082905262461bcd60e51b825261044691600401612532565b610fa48282610b1d565b60008281526001602052604090206106379082610ba1565b610fc68282611a61565b60008281526001602052604090206106379082611ac6565b610fe66108c2565b6110295760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610446565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b0383166110995760405162461bcd60e51b81526004016104469061265f565b80518251146110ba5760405162461bcd60e51b815260040161044690612749565b60003390506110dd81856000868660405180602001604052806000815250611706565b60005b83518110156111c157600084828151811061110b57634e487b7160e01b600052603260045260246000fd5b60200260200101519050600084838151811061113757634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156111885760405162461bcd60e51b81526004016104469061258d565b60009283526002602090815260408085206001600160a01b038b16865290915290922091039055806111b9816128ef565b9150506110e0565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8686604051611212929190612504565b60405180910390a450505050565b6001600160a01b0384166112465760405162461bcd60e51b815260040161044690612791565b336112668160008761125788611adb565b61126088611adb565b87611706565b60008481526002602090815260408083206001600160a01b0389168452909152812080548592906112989084906127f6565b909155505060408051858152602081018590526001600160a01b0380881692600092918516917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461060981600087878787611b34565b6113006108c2565b156113405760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610446565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110563390565b6000610a1d8383611bfe565b816001600160a01b0316836001600160a01b031614156113f55760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610446565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610485825490565b6001600160a01b0384166114925760405162461bcd60e51b81526004016104469061261a565b336114a281878761125788611adb565b60008481526002602090815260408083206001600160a01b038a168452909152902054838110156114e55760405162461bcd60e51b8152600401610446906126ff565b60008581526002602090815260408083206001600160a01b038b81168552925280832087850390559088168252812080548692906115249084906127f6565b909155505060408051868152602081018690526001600160a01b03808916928a821692918616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611584828888888888611b34565b50505050505050565b6001600160a01b0383166115b35760405162461bcd60e51b81526004016104469061265f565b336115e2818560006115c487611adb565b6115cd87611adb565b60405180602001604052806000815250611706565b60008381526002602090815260408083206001600160a01b0388168452909152902054828110156116255760405162461bcd60e51b81526004016104469061258d565b60008481526002602090815260408083206001600160a01b03898116808652918452828520888703905582518981529384018890529092908616917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a45050505050565b60008181526001830160205260408120546116d957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610474565b506000610474565b60006001600160e01b03198216635a05180f60e01b1480610485575061048582611c36565b610f2e868686868686611c6b565b6001600160a01b0384163b15610f2e5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190611758908990899088908890889060040161244e565b602060405180830381600087803b15801561177257600080fd5b505af19250505080156117a2575060408051601f3d908101601f1916820190925261179f91810190612357565b60015b61184f576117ae612936565b806308c379a014156117e857506117c361294d565b806117ce57506117ea565b8060405162461bcd60e51b81526004016104469190612532565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e20455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610446565b6001600160e01b0319811663bc197c8160e01b146115845760405162461bcd60e51b815260040161044690612545565b6060600061188e83600261280e565b6118999060026127f6565b67ffffffffffffffff8111156118bf57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f1916602001820160405280156118e9576020820181803683370190505b509050600360fc1b8160008151811061191257634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061194f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061197384600261280e565b61197e9060016127f6565b90505b6001811115611a12576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119c057634e487b7160e01b600052603260045260246000fd5b1a60f81b8282815181106119e457634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611a0b81612870565b9050611981565b508315610a1d5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610446565b611a6b8282610a24565b156106b6576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610a1d836001600160a01b038416611cd5565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611b2357634e487b7160e01b600052603260045260246000fd5b602090810291909101015292915050565b6001600160a01b0384163b15610f2e5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e6190611b7890899089908890889088906004016124ac565b602060405180830381600087803b158015611b9257600080fd5b505af1925050508015611bc2575060408051601f3d908101601f19168201909252611bbf91810190612357565b60015b611bce576117ae612936565b6001600160e01b0319811663f23a6e6160e01b146115845760405162461bcd60e51b815260040161044690612545565b6000826000018281548110611c2357634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061048557506301ffc9a760e01b6001600160e01b0319831614610485565b611c736108c2565b15610f2e5760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610446565b60008181526001830160205260408120548015611de8576000611cf960018361282d565b8554909150600090611d0d9060019061282d565b9050818114611d8e576000866000018281548110611d3b57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611d6c57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611dad57634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610474565b6000915050610474565b80356001600160a01b038116811461048857600080fd5b600082601f830112611e19578081fd5b81356020611e26826127d2565b604051611e3382826128c2565b8381528281019150858301600585901b87018401881015611e52578586fd5b855b85811015611e7057813584529284019290840190600101611e54565b5090979650505050505050565b600082601f830112611e8d578081fd5b813567ffffffffffffffff811115611ea757611ea7612920565b604051611ebe601f8301601f1916602001826128c2565b818152846020838601011115611ed2578283fd5b816020850160208301379081016020019190915292915050565b60008060408385031215611efe578182fd5b611f0783611df2565b9150611f1560208401611df2565b90509250929050565b600080600080600060a08688031215611f35578081fd5b611f3e86611df2565b9450611f4c60208701611df2565b9350604086013567ffffffffffffffff80821115611f68578283fd5b611f7489838a01611e09565b94506060880135915080821115611f89578283fd5b611f9589838a01611e09565b93506080880135915080821115611faa578283fd5b50611fb788828901611e7d565b9150509295509295909350565b600080600080600060a08688031215611fdb578081fd5b611fe486611df2565b9450611ff260208701611df2565b93506040860135925060608601359150608086013567ffffffffffffffff81111561201b578182fd5b611fb788828901611e7d565b60008060006060848603121561203b578283fd5b61204484611df2565b9250602084013567ffffffffffffffff80821115612060578384fd5b61206c87838801611e09565b93506040860135915080821115612081578283fd5b5061208e86828701611e09565b9150509250925092565b600080600080608085870312156120ad578384fd5b6120b685611df2565b9350602085013567ffffffffffffffff808211156120d2578485fd5b6120de88838901611e09565b945060408701359150808211156120f3578384fd5b6120ff88838901611e09565b93506060870135915080821115612114578283fd5b5061212187828801611e7d565b91505092959194509250565b6000806040838503121561213f578182fd5b61214883611df2565b91506020830135801515811461215c578182fd5b809150509250929050565b60008060408385031215612179578182fd5b61218283611df2565b946020939093013593505050565b6000806000606084860312156121a4578081fd5b6121ad84611df2565b95602085013595506040909401359392505050565b600080600080608085870312156121d7578182fd5b6121e085611df2565b93506020850135925060408501359150606085013567ffffffffffffffff811115612209578182fd5b61212187828801611e7d565b60008060408385031215612227578182fd5b823567ffffffffffffffff8082111561223e578384fd5b818501915085601f830112612251578384fd5b8135602061225e826127d2565b60405161226b82826128c2565b8381528281019150858301600585901b870184018b101561228a578889fd5b8896505b848710156122b35761229f81611df2565b83526001969096019591830191830161228e565b50965050860135925050808211156122c9578283fd5b506122d685828601611e09565b9150509250929050565b6000602082840312156122f1578081fd5b5035919050565b6000806040838503121561230a578182fd5b82359150611f1560208401611df2565b6000806040838503121561232c578182fd5b50508035926020909101359150565b60006020828403121561234c578081fd5b8135610a1d816129df565b600060208284031215612368578081fd5b8151610a1d816129df565b6000815180845260208085019450808401835b838110156123a257815187529582019590820190600101612386565b509495945050505050565b600081518084526123c5816020860160208601612844565b601f01601f19169290920160200192915050565b60007f416363657373436f6e74726f6c3a206163636f756e742000000000000000000082528351612411816017850160208801612844565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612442816028840160208801612844565b01602801949350505050565b6001600160a01b0386811682528516602082015260a06040820181905260009061247a90830186612373565b828103606084015261248c8186612373565b905082810360808401526124a081856123ad565b98975050505050505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906124e6908301846123ad565b979650505050505050565b600060208252610a1d6020830184612373565b6000604082526125176040830185612373565b82810360208401526125298185612373565b95945050505050565b600060208252610a1d60208301846123ad565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b60208082526029908201527f455243313135353a2063616c6c6572206973206e6f74206f776e6572206e6f7260408201526808185c1c1c9bdd995960ba1b606082015260800190565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b600067ffffffffffffffff8211156127ec576127ec612920565b5060051b60200190565b600082198211156128095761280961290a565b500190565b60008160001904831182151516156128285761282861290a565b500290565b60008282101561283f5761283f61290a565b500390565b60005b8381101561285f578181015183820152602001612847565b838111156105735750506000910152565b60008161287f5761287f61290a565b506000190190565b600181811c9082168061289b57607f821691505b602082108114156128bc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8201601f1916810167ffffffffffffffff811182821017156128e8576128e8612920565b6040525050565b60006000198214156129035761290361290a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600060033d11156108c957600481823e5160e01c90565b600060443d101561295d576108c9565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561298f5750505050506108c9565b82850191508151818111156129a9575050505050506108c9565b843d87010160208285010111156129c5575050505050506108c9565b6129d4602082860101876128c2565b509094505050505090565b6001600160e01b0319811681146129f557600080fd5b5056fea2646970667358221220b10f48e828786bd2b195dc403b51d46fbc3f15ee9119045cd15e6408652d342f64736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002d6138038062002d618339810160408190526200003491620002e7565b806200004081620000b7565b506005805460ff1916905562000058600033620000d0565b620000847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000d0565b620000b07f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000d0565b50620003ff565b8051620000cc9060049060208401906200022b565b5050565b620000cc8282620000ed82826200011960201b62000a871760201c565b60008281526001602090815260409091206200011491839062000b0b620001b9821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000cc576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001753390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001d0836001600160a01b038416620001d9565b90505b92915050565b60008181526001830160205260408120546200022257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001d3565b506000620001d3565b8280546200023990620003c3565b90600052602060002090601f0160209004810192826200025d5760008555620002a8565b82601f106200027857805160ff1916838001178555620002a8565b82800160010185558215620002a8579182015b82811115620002a85782518255916020019190600101906200028b565b50620002b6929150620002ba565b5090565b5b80821115620002b65760008155600101620002bb565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620002fb57600080fd5b82516001600160401b03808211156200031357600080fd5b818501915085601f8301126200032857600080fd5b8151818111156200033d576200033d620002d1565b604051601f8201601f19908116603f01168101908382118183101715620003685762000368620002d1565b8160405282815288868487010111156200038157600080fd5b600093505b82841015620003a5578484018601518185018701529285019262000386565b82841115620003b75760008684830101525b98975050505050505050565b600181811c90821680620003d857607f821691505b602082108103620003f957634e487b7160e01b600052602260045260246000fd5b50919050565b612952806200040f6000396000f3fe608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611ce9565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d29565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d46565b610487565b6040516101949190611db7565b6101f36101ee366004611f16565b61051b565b005b61018a610203366004611d46565b60009081526020819052604090206001015490565b6101f3610226366004611faf565b610573565b6101f3610239366004612059565b6105bf565b6101f361024c366004612059565b6105e9565b6101f3610667565b61026c610267366004612085565b61070d565b604051610194919061218b565b60055460ff166101b0565b6101f361029236600461219e565b610837565b6101f36102a5366004612212565b61087a565b6101f36108cc565b6102c56102c0366004612267565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612059565b61098f565b61018a600081565b6101f3610306366004612289565b6109b8565b61018a610319366004611d46565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612059565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122c5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c93660046122ef565b6109ff565b6101f36103dc366004612354565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b60606004805461049690612387565b80601f01602080910402602001604051908101604052809291908181526020018280546104c290612387565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123c1565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b81526004016104489061241e565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611dca565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db61246c565b60200260200101518583815181106107f5576107f561246c565b60200260200101516103e1565b8282815181106108145761081461246c565b602090810291909101015261082881612498565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b81526004016104489061241e565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123c1565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112be565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b81526004016104489061241e565b6105b885858585856112c8565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b81526004016104489061241e565b6105e4838383611404565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611520565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b8061047657506104768261156f565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124b1565b8151835114610ba75760405162461bcd60e51b8152600401610448906124f2565b33610bb781600087878787611594565b60005b8451811015610c5357838181518110610bd557610bd561246c565b602002602001015160026000878481518110610bf357610bf361246c565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b919061253a565b90915550819050610c4b81612498565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca4929190612552565b60405180910390a46105b8816000878787876115a2565b8151835114610cdc5760405162461bcd60e51b8152600401610448906124f2565b6001600160a01b038416610d025760405162461bcd60e51b815260040161044890612580565b33610d11818787878787611594565b60005b8451811015610dfa576000858281518110610d3157610d3161246c565b602002602001015190506000858381518110610d4f57610d4f61246c565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125c5565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf90849061253a565b9250508190555050505080610df390612498565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a929190612552565b60405180910390a4610e608187878787876115a2565b505050505050565b610e7281336116fd565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611756565b60008281526001602052604090206105e490826117bb565b610ec16117d0565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061260f565b8051825114610f525760405162461bcd60e51b8152600401610448906124f2565b6000339050610f7581856000868660405180602001604052806000815250611594565b60005b835181101561103d576000848281518110610f9557610f9561246c565b602002602001015190506000848381518110610fb357610fb361246c565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b815260040161044890612652565b60009283526002602090815260408085206001600160a01b038b168652909152909220910390558061103581612498565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e929190612552565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124b1565b3360006110dc85611819565b905060006110e985611819565b90506110fa83600089858589611594565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c90849061253a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611864565b50505050505050565b61119d61191f565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611965565b816001600160a01b0316836001600160a01b0316036112515760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ee5760405162461bcd60e51b815260040161044890612580565b3360006112fa85611819565b9050600061130785611819565b9050611317838989858589611594565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135a5760405162461bcd60e51b8152600401610448906125c5565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139990849061253a565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113f9848a8a8a8a8a611864565b505050505050505050565b6001600160a01b03831661142a5760405162461bcd60e51b81526004016104489061260f565b33600061143684611819565b9050600061144384611819565b905061146383876000858560405180602001604052806000815250611594565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a65760405162461bcd60e51b815260040161044890612652565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b148061047657506104768261198f565b610e608686868686866119c4565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e69089908990889088908890600401612696565b6020604051808303816000875af1925050508015611621575060408051601f3d908101601f1916820190925261161e918101906126f4565b60015b6116cd5761162d612711565b806308c379a003611666575061164161272d565b8061164c5750611668565b8060405162461bcd60e51b81526004016104489190611db7565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127b7565b611707828261098f565b6106635761171481611a2c565b61171f836020611a3e565b6040516020016117309291906127ff565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611db7565b611760828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bda565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118535761185361246c565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118a89089908990889088908890600401612874565b6020604051808303816000875af19250505080156118e3575060408051601f3d908101601f191682019092526118e0918101906126f4565b60015b6118ef5761162d612711565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127b7565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b600082600001828154811061197c5761197c61246c565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606104766001600160a01b03831660145b60606000611a4d8360026128b9565b611a5890600261253a565b67ffffffffffffffff811115611a7057611a70611dca565b6040519080825280601f01601f191660200182016040528015611a9a576020820181803683370190505b509050600360fc1b81600081518110611ab557611ab561246c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ae457611ae461246c565b60200101906001600160f81b031916908160001a9053506000611b088460026128b9565b611b1390600161253a565b90505b6001811115611b8b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b4757611b4761246c565b1a60f81b828281518110611b5d57611b5d61246c565b60200101906001600160f81b031916908160001a90535060049490941c93611b84816128d8565b9050611b16565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cc3576000611bfe6001836128ef565b8554909150600090611c12906001906128ef565b9050818114611c77576000866000018281548110611c3257611c3261246c565b9060005260206000200154905080876000018481548110611c5557611c5561246c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c8857611c88612906565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611ce457600080fd5b919050565b60008060408385031215611cfc57600080fd5b611d0583611ccd565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d3b57600080fd5b813561098881611d13565b600060208284031215611d5857600080fd5b5035919050565b60005b83811015611d7a578181015183820152602001611d62565b8381111561056d5750506000910152565b60008151808452611da3816020860160208601611d5f565b601f01601f19169290920160200192915050565b6020815260006109886020830184611d8b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611dca565b6040525050565b600067ffffffffffffffff821115611e2757611e27611dca565b5060051b60200190565b600082601f830112611e4257600080fd5b81356020611e4f82611e0d565b604051611e5c8282611de0565b83815260059390931b8501820192828101915086841115611e7c57600080fd5b8286015b84811015611e975780358352918301918301611e80565b509695505050505050565b600082601f830112611eb357600080fd5b813567ffffffffffffffff811115611ecd57611ecd611dca565b604051611ee4601f8301601f191660200182611de0565b818152846020838601011115611ef957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f2c57600080fd5b611f3585611ccd565b9350602085013567ffffffffffffffff80821115611f5257600080fd5b611f5e88838901611e31565b94506040870135915080821115611f7457600080fd5b611f8088838901611e31565b93506060870135915080821115611f9657600080fd5b50611fa387828801611ea2565b91505092959194509250565b600080600080600060a08688031215611fc757600080fd5b611fd086611ccd565b9450611fde60208701611ccd565b9350604086013567ffffffffffffffff80821115611ffb57600080fd5b61200789838a01611e31565b9450606088013591508082111561201d57600080fd5b61202989838a01611e31565b9350608088013591508082111561203f57600080fd5b5061204c88828901611ea2565b9150509295509295909350565b6000806040838503121561206c57600080fd5b8235915061207c60208401611ccd565b90509250929050565b6000806040838503121561209857600080fd5b823567ffffffffffffffff808211156120b057600080fd5b818501915085601f8301126120c457600080fd5b813560206120d182611e0d565b6040516120de8282611de0565b83815260059390931b85018201928281019150898411156120fe57600080fd5b948201945b838610156121235761211486611ccd565b82529482019490820190612103565b9650508601359250508082111561213957600080fd5b5061214685828601611e31565b9150509250929050565b600081518084526020808501945080840160005b8381101561218057815187529582019590820190600101612164565b509495945050505050565b6020815260006109886020830184612150565b6000806000606084860312156121b357600080fd5b6121bc84611ccd565b9250602084013567ffffffffffffffff808211156121d957600080fd5b6121e587838801611e31565b935060408601359150808211156121fb57600080fd5b5061220886828701611e31565b9150509250925092565b6000806000806080858703121561222857600080fd5b61223185611ccd565b93506020850135925060408501359150606085013567ffffffffffffffff81111561225b57600080fd5b611fa387828801611ea2565b6000806040838503121561227a57600080fd5b50508035926020909101359150565b6000806040838503121561229c57600080fd5b6122a583611ccd565b9150602083013580151581146122ba57600080fd5b809150509250929050565b600080604083850312156122d857600080fd5b6122e183611ccd565b915061207c60208401611ccd565b600080600080600060a0868803121561230757600080fd5b61231086611ccd565b945061231e60208701611ccd565b93506040860135925060608601359150608086013567ffffffffffffffff81111561234857600080fd5b61204c88828901611ea2565b60008060006060848603121561236957600080fd5b61237284611ccd565b95602085013595506040909401359392505050565b600181811c9082168061239b57607f821691505b6020821081036123bb57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016124aa576124aa612482565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561254d5761254d612482565b500190565b6040815260006125656040830185612150565b82810360208401526125778185612150565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126c290830186612150565b82810360608401526126d48186612150565b905082810360808401526126e88185611d8b565b98975050505050505050565b60006020828403121561270657600080fd5b815161098881611d13565b600060033d111561272a5760046000803e5060005160e01c5b90565b600060443d101561273b5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561276b57505050505090565b82850191508151818111156127835750505050505090565b843d870101602082850101111561279d5750505050505090565b6127ac60208286010187611de0565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612837816017850160208801611d5f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612868816028840160208801611d5f565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128ae90830184611d8b565b979650505050505050565b60008160001904831182151516156128d3576128d3612482565b500290565b6000816128e7576128e7612482565b506000190190565b60008282101561290157612901612482565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a8fa700831137222bbcc05df6f069d5761be110db6c1f18400e9a87dcc5a5f7864736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101725760003560e01c8063731133e9116100de578063ca15c87311610097578063e63ab1e911610071578063e63ab1e914610358578063e985e9c51461037f578063f242432a146103bb578063f5298aca146103ce57600080fd5b8063ca15c8731461030b578063d53913931461031e578063d547741f1461034557600080fd5b8063731133e9146102975780638456cb59146102aa5780639010d07c146102b257806391d14854146102dd578063a217fddf146102f0578063a22cb465146102f857600080fd5b80632f2ff15d116101305780632f2ff15d1461022b57806336568abe1461023e5780633f4ba83a146102515780634e1273f4146102595780635c975abb146102795780636b20c4541461028457600080fd5b8062fdd58e1461017757806301ffc9a71461019d5780630e89341c146101c05780631f7fdffa146101e0578063248a9ca3146101f55780632eb2c2d614610218575b600080fd5b61018a610185366004611ce9565b6103e1565b6040519081526020015b60405180910390f35b6101b06101ab366004611d29565b61047c565b6040519015158152602001610194565b6101d36101ce366004611d46565b610487565b6040516101949190611db7565b6101f36101ee366004611f16565b61051b565b005b61018a610203366004611d46565b60009081526020819052604090206001015490565b6101f3610226366004611faf565b610573565b6101f3610239366004612059565b6105bf565b6101f361024c366004612059565b6105e9565b6101f3610667565b61026c610267366004612085565b61070d565b604051610194919061218b565b60055460ff166101b0565b6101f361029236600461219e565b610837565b6101f36102a5366004612212565b61087a565b6101f36108cc565b6102c56102c0366004612267565b610970565b6040516001600160a01b039091168152602001610194565b6101b06102eb366004612059565b61098f565b61018a600081565b6101f3610306366004612289565b6109b8565b61018a610319366004611d46565b6109c3565b61018a7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6101f3610353366004612059565b6109da565b61018a7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101b061038d3660046122c5565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205460ff1690565b6101f36103c93660046122ef565b6109ff565b6101f36103dc366004612354565b610a44565b60006001600160a01b0383166104515760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201526930b634b21037bbb732b960b11b60648201526084015b60405180910390fd5b5060008181526002602090815260408083206001600160a01b03861684529091529020545b92915050565b600061047682610b20565b60606004805461049690612387565b80601f01602080910402602001604051908101604052809291908181526020018280546104c290612387565b801561050f5780601f106104e45761010080835404028352916020019161050f565b820191906000526020600020905b8154815290600101906020018083116104f257829003601f168201915b50505050509050919050565b6105457f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6105615760405162461bcd60e51b8152600401610448906123c1565b61056d84848484610b60565b50505050565b6001600160a01b03851633148061058f575061058f853361038d565b6105ab5760405162461bcd60e51b81526004016104489061241e565b6105b88585858585610cbb565b5050505050565b6000828152602081905260409020600101546105da81610e68565b6105e48383610e75565b505050565b6001600160a01b03811633146106595760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610448565b6106638282610e97565b5050565b6106917f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6107035760405162461bcd60e51b815260206004820152603b60248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f20756e706175736500000000006064820152608401610448565b61070b610eb9565b565b606081518351146107725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e677468604482015268040dad2e6dac2e8c6d60bb1b6064820152608401610448565b6000835167ffffffffffffffff81111561078e5761078e611dca565b6040519080825280602002602001820160405280156107b7578160200160208202803683370190505b50905060005b845181101561082f576108028582815181106107db576107db61246c565b60200260200101518583815181106107f5576107f561246c565b60200260200101516103e1565b8282815181106108145761081461246c565b602090810291909101015261082881612498565b90506107bd565b509392505050565b6001600160a01b0383163314806108535750610853833361038d565b61086f5760405162461bcd60e51b81526004016104489061241e565b6105e4838383610f0b565b6108a47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63361098f565b6108c05760405162461bcd60e51b8152600401610448906123c1565b61056d848484846110aa565b6108f67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3361098f565b6109685760405162461bcd60e51b815260206004820152603960248201527f455243313135355072657365744d696e7465725061757365723a206d7573742060448201527f686176652070617573657220726f6c6520746f207061757365000000000000006064820152608401610448565b61070b611195565b600082815260016020526040812061098890836111d2565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6106633383836111de565b6000818152600160205260408120610476906112be565b6000828152602081905260409020600101546109f581610e68565b6105e48383610e97565b6001600160a01b038516331480610a1b5750610a1b853361038d565b610a375760405162461bcd60e51b81526004016104489061241e565b6105b885858585856112c8565b6001600160a01b038316331480610a605750610a60833361038d565b610a7c5760405162461bcd60e51b81526004016104489061241e565b6105e4838383611404565b610a91828261098f565b610663576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610ac73390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610988836001600160a01b038416611520565b60006001600160e01b03198216636cdb3d1360e11b1480610b5157506001600160e01b031982166303a24d0760e21b145b8061047657506104768261156f565b6001600160a01b038416610b865760405162461bcd60e51b8152600401610448906124b1565b8151835114610ba75760405162461bcd60e51b8152600401610448906124f2565b33610bb781600087878787611594565b60005b8451811015610c5357838181518110610bd557610bd561246c565b602002602001015160026000878481518110610bf357610bf361246c565b602002602001015181526020019081526020016000206000886001600160a01b03166001600160a01b031681526020019081526020016000206000828254610c3b919061253a565b90915550819050610c4b81612498565b915050610bba565b50846001600160a01b031660006001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610ca4929190612552565b60405180910390a46105b8816000878787876115a2565b8151835114610cdc5760405162461bcd60e51b8152600401610448906124f2565b6001600160a01b038416610d025760405162461bcd60e51b815260040161044890612580565b33610d11818787878787611594565b60005b8451811015610dfa576000858281518110610d3157610d3161246c565b602002602001015190506000858381518110610d4f57610d4f61246c565b60209081029190910181015160008481526002835260408082206001600160a01b038e168352909352919091205490915081811015610da05760405162461bcd60e51b8152600401610448906125c5565b60008381526002602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290610ddf90849061253a565b9250508190555050505080610df390612498565b9050610d14565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb8787604051610e4a929190612552565b60405180910390a4610e608187878787876115a2565b505050505050565b610e7281336116fd565b50565b610e7f8282610a87565b60008281526001602052604090206105e49082610b0b565b610ea18282611756565b60008281526001602052604090206105e490826117bb565b610ec16117d0565b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038316610f315760405162461bcd60e51b81526004016104489061260f565b8051825114610f525760405162461bcd60e51b8152600401610448906124f2565b6000339050610f7581856000868660405180602001604052806000815250611594565b60005b835181101561103d576000848281518110610f9557610f9561246c565b602002602001015190506000848381518110610fb357610fb361246c565b60209081029190910181015160008481526002835260408082206001600160a01b038c1683529093529190912054909150818110156110045760405162461bcd60e51b815260040161044890612652565b60009283526002602090815260408085206001600160a01b038b168652909152909220910390558061103581612498565b915050610f78565b5060006001600160a01b0316846001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb868660405161108e929190612552565b60405180910390a460408051602081019091526000905261056d565b6001600160a01b0384166110d05760405162461bcd60e51b8152600401610448906124b1565b3360006110dc85611819565b905060006110e985611819565b90506110fa83600089858589611594565b60008681526002602090815260408083206001600160a01b038b1684529091528120805487929061112c90849061253a565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a461118c83600089898989611864565b50505050505050565b61119d61191f565b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610eee3390565b60006109888383611965565b816001600160a01b0316836001600160a01b0316036112515760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c20737461747573604482015268103337b91039b2b63360b91b6064820152608401610448565b6001600160a01b03838116600081815260036020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6000610476825490565b6001600160a01b0384166112ee5760405162461bcd60e51b815260040161044890612580565b3360006112fa85611819565b9050600061130785611819565b9050611317838989858589611594565b60008681526002602090815260408083206001600160a01b038c1684529091529020548581101561135a5760405162461bcd60e51b8152600401610448906125c5565b60008781526002602090815260408083206001600160a01b038d8116855292528083208985039055908a1682528120805488929061139990849061253a565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a46113f9848a8a8a8a8a611864565b505050505050505050565b6001600160a01b03831661142a5760405162461bcd60e51b81526004016104489061260f565b33600061143684611819565b9050600061144384611819565b905061146383876000858560405180602001604052806000815250611594565b60008581526002602090815260408083206001600160a01b038a168452909152902054848110156114a65760405162461bcd60e51b815260040161044890612652565b60008681526002602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a460408051602081019091526000905261118c565b600081815260018301602052604081205461156757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610476565b506000610476565b60006001600160e01b03198216635a05180f60e01b148061047657506104768261198f565b610e608686868686866119c4565b6001600160a01b0384163b15610e605760405163bc197c8160e01b81526001600160a01b0385169063bc197c81906115e69089908990889088908890600401612696565b6020604051808303816000875af1925050508015611621575060408051601f3d908101601f1916820190925261161e918101906126f4565b60015b6116cd5761162d612711565b806308c379a003611666575061164161272d565b8061164c5750611668565b8060405162461bcd60e51b81526004016104489190611db7565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d455243313135356044820152732932b1b2b4bb32b91034b6b83632b6b2b73a32b960611b6064820152608401610448565b6001600160e01b0319811663bc197c8160e01b1461118c5760405162461bcd60e51b8152600401610448906127b7565b611707828261098f565b6106635761171481611a2c565b61171f836020611a3e565b6040516020016117309291906127ff565b60408051601f198184030181529082905262461bcd60e51b825261044891600401611db7565b611760828261098f565b15610663576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610988836001600160a01b038416611bda565b60055460ff1661070b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610448565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106118535761185361246c565b602090810291909101015292915050565b6001600160a01b0384163b15610e605760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906118a89089908990889088908890600401612874565b6020604051808303816000875af19250505080156118e3575060408051601f3d908101601f191682019092526118e0918101906126f4565b60015b6118ef5761162d612711565b6001600160e01b0319811663f23a6e6160e01b1461118c5760405162461bcd60e51b8152600401610448906127b7565b60055460ff161561070b5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610448565b600082600001828154811061197c5761197c61246c565b9060005260206000200154905092915050565b60006001600160e01b03198216637965db0b60e01b148061047657506301ffc9a760e01b6001600160e01b0319831614610476565b60055460ff1615610e605760405162461bcd60e51b815260206004820152602c60248201527f455243313135355061757361626c653a20746f6b656e207472616e736665722060448201526b1dda1a5b19481c185d5cd95960a21b6064820152608401610448565b60606104766001600160a01b03831660145b60606000611a4d8360026128b9565b611a5890600261253a565b67ffffffffffffffff811115611a7057611a70611dca565b6040519080825280601f01601f191660200182016040528015611a9a576020820181803683370190505b509050600360fc1b81600081518110611ab557611ab561246c565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611ae457611ae461246c565b60200101906001600160f81b031916908160001a9053506000611b088460026128b9565b611b1390600161253a565b90505b6001811115611b8b576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611b4757611b4761246c565b1a60f81b828281518110611b5d57611b5d61246c565b60200101906001600160f81b031916908160001a90535060049490941c93611b84816128d8565b9050611b16565b5083156109885760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610448565b60008181526001830160205260408120548015611cc3576000611bfe6001836128ef565b8554909150600090611c12906001906128ef565b9050818114611c77576000866000018281548110611c3257611c3261246c565b9060005260206000200154905080876000018481548110611c5557611c5561246c565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c8857611c88612906565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610476565b6000915050610476565b80356001600160a01b0381168114611ce457600080fd5b919050565b60008060408385031215611cfc57600080fd5b611d0583611ccd565b946020939093013593505050565b6001600160e01b031981168114610e7257600080fd5b600060208284031215611d3b57600080fd5b813561098881611d13565b600060208284031215611d5857600080fd5b5035919050565b60005b83811015611d7a578181015183820152602001611d62565b8381111561056d5750506000910152565b60008151808452611da3816020860160208601611d5f565b601f01601f19169290920160200192915050565b6020815260006109886020830184611d8b565b634e487b7160e01b600052604160045260246000fd5b601f8201601f1916810167ffffffffffffffff81118282101715611e0657611e06611dca565b6040525050565b600067ffffffffffffffff821115611e2757611e27611dca565b5060051b60200190565b600082601f830112611e4257600080fd5b81356020611e4f82611e0d565b604051611e5c8282611de0565b83815260059390931b8501820192828101915086841115611e7c57600080fd5b8286015b84811015611e975780358352918301918301611e80565b509695505050505050565b600082601f830112611eb357600080fd5b813567ffffffffffffffff811115611ecd57611ecd611dca565b604051611ee4601f8301601f191660200182611de0565b818152846020838601011115611ef957600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060808587031215611f2c57600080fd5b611f3585611ccd565b9350602085013567ffffffffffffffff80821115611f5257600080fd5b611f5e88838901611e31565b94506040870135915080821115611f7457600080fd5b611f8088838901611e31565b93506060870135915080821115611f9657600080fd5b50611fa387828801611ea2565b91505092959194509250565b600080600080600060a08688031215611fc757600080fd5b611fd086611ccd565b9450611fde60208701611ccd565b9350604086013567ffffffffffffffff80821115611ffb57600080fd5b61200789838a01611e31565b9450606088013591508082111561201d57600080fd5b61202989838a01611e31565b9350608088013591508082111561203f57600080fd5b5061204c88828901611ea2565b9150509295509295909350565b6000806040838503121561206c57600080fd5b8235915061207c60208401611ccd565b90509250929050565b6000806040838503121561209857600080fd5b823567ffffffffffffffff808211156120b057600080fd5b818501915085601f8301126120c457600080fd5b813560206120d182611e0d565b6040516120de8282611de0565b83815260059390931b85018201928281019150898411156120fe57600080fd5b948201945b838610156121235761211486611ccd565b82529482019490820190612103565b9650508601359250508082111561213957600080fd5b5061214685828601611e31565b9150509250929050565b600081518084526020808501945080840160005b8381101561218057815187529582019590820190600101612164565b509495945050505050565b6020815260006109886020830184612150565b6000806000606084860312156121b357600080fd5b6121bc84611ccd565b9250602084013567ffffffffffffffff808211156121d957600080fd5b6121e587838801611e31565b935060408601359150808211156121fb57600080fd5b5061220886828701611e31565b9150509250925092565b6000806000806080858703121561222857600080fd5b61223185611ccd565b93506020850135925060408501359150606085013567ffffffffffffffff81111561225b57600080fd5b611fa387828801611ea2565b6000806040838503121561227a57600080fd5b50508035926020909101359150565b6000806040838503121561229c57600080fd5b6122a583611ccd565b9150602083013580151581146122ba57600080fd5b809150509250929050565b600080604083850312156122d857600080fd5b6122e183611ccd565b915061207c60208401611ccd565b600080600080600060a0868803121561230757600080fd5b61231086611ccd565b945061231e60208701611ccd565b93506040860135925060608601359150608086013567ffffffffffffffff81111561234857600080fd5b61204c88828901611ea2565b60008060006060848603121561236957600080fd5b61237284611ccd565b95602085013595506040909401359392505050565b600181811c9082168061239b57607f821691505b6020821081036123bb57634e487b7160e01b600052602260045260246000fd5b50919050565b60208082526038908201527f455243313135355072657365744d696e7465725061757365723a206d7573742060408201527f68617665206d696e74657220726f6c6520746f206d696e740000000000000000606082015260800190565b6020808252602e908201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60408201526d195c881bdc88185c1c1c9bdd995960921b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016124aa576124aa612482565b5060010190565b60208082526021908201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736040820152607360f81b606082015260800190565b60208082526028908201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206040820152670dad2e6dac2e8c6d60c31b606082015260800190565b6000821982111561254d5761254d612482565b500190565b6040815260006125656040830185612150565b82810360208401526125778185612150565b95945050505050565b60208082526025908201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604082015264647265737360d81b606082015260800190565b6020808252602a908201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60408201526939103a3930b739b332b960b11b606082015260800190565b60208082526023908201527f455243313135353a206275726e2066726f6d20746865207a65726f206164647260408201526265737360e81b606082015260800190565b60208082526024908201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604082015263616e636560e01b606082015260800190565b6001600160a01b0386811682528516602082015260a0604082018190526000906126c290830186612150565b82810360608401526126d48186612150565b905082810360808401526126e88185611d8b565b98975050505050505050565b60006020828403121561270657600080fd5b815161098881611d13565b600060033d111561272a5760046000803e5060005160e01c5b90565b600060443d101561273b5790565b6040516003193d81016004833e81513d67ffffffffffffffff816024840111818411171561276b57505050505090565b82850191508151818111156127835750505050505090565b843d870101602082850101111561279d5750505050505090565b6127ac60208286010187611de0565b509095945050505050565b60208082526028908201527f455243313135353a204552433131353552656365697665722072656a656374656040820152676420746f6b656e7360c01b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612837816017850160208801611d5f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612868816028840160208801611d5f565b01602801949350505050565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906128ae90830184611d8b565b979650505050505050565b60008160001904831182151516156128d3576128d3612482565b500290565b6000816128e7576128e7612482565b506000190190565b60008282101561290157612901612482565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220a8fa700831137222bbcc05df6f069d5761be110db6c1f18400e9a87dcc5a5f7864736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c92a36eefee2934b365c6149525e2ff18a2daebcc834c39f9081bfe4a82417264736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c92a36eefee2934b365c6149525e2ff18a2daebcc834c39f9081bfe4a82417264736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6cd488a95ebc63e0022dd975fdc218ce3b7c04e8100e41d5952999f20cb29e164736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e6cd488a95ebc63e0022dd975fdc218ce3b7c04e8100e41d5952999f20cb29e164736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -31,6 +31,6 @@ {

],
"bytecode": "0x608060405234801561001057600080fd5b50610112806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b5578182fd5b8235915060208301356001600160a01b038116811460d1578182fd5b80915050925092905056fea26469706673582212200728bca0b5cfe0d25915fcb512f2fbb1437b031c4ec487f4fcb7c5a4d709ac2864736f6c63430008030033",
"deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b5578182fd5b8235915060208301356001600160a01b038116811460d1578182fd5b80915050925092905056fea26469706673582212200728bca0b5cfe0d25915fcb512f2fbb1437b031c4ec487f4fcb7c5a4d709ac2864736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b50610114806100206000396000f3fe6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220a5979d2eef8916fee729d245f887d0acab4fec8979c537f4d26331a22797461964736f6c634300080d0033",
"deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060285760003560e01c8063249cb3fa14602d575b600080fd5b603c603836600460a4565b604e565b60405190815260200160405180910390f35b6000828152602081815260408083206001600160a01b038516845290915281205460ff16607b576000609d565b7fa2ef4600d742022d532d4747cb3547474667d6f13804902513b2ec01c848f4b45b9392505050565b6000806040838503121560b657600080fd5b8235915060208301356001600160a01b038116811460d357600080fd5b80915050925092905056fea2646970667358221220a5979d2eef8916fee729d245f887d0acab4fec8979c537f4d26331a22797461964736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -76,6 +76,6 @@ {

],
"bytecode": "0x608060405260405161077e38038061077e83398101604081905261002291610303565b61004d60017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd61041b565b6000805160206107378339815191521461007757634e487b7160e01b600052600160045260246000fd5b6100838282600061008a565b5050610480565b610093836100c0565b6000825111806100a05750805b156100bb576100b9838361010060201b6100291760201c565b505b505050565b6100c98161012c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606101258383604051806060016040528060278152602001610757602791396101ec565b9392505050565b61013f816102c160201b6100551760201c565b6101a65760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101cb60008051602061073783398151915260001b6102c760201b61005b1760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060833b61024b5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b606482015260840161019d565b600080856001600160a01b03168560405161026691906103cc565b600060405180830381855af49150503d80600081146102a1576040519150601f19603f3d011682016040523d82523d6000602084013e6102a6565b606091505b5090925090506102b78282866102ca565b9695505050505050565b3b151590565b90565b606083156102d9575081610125565b8251156102e95782518084602001fd5b8160405162461bcd60e51b815260040161019d91906103e8565b60008060408385031215610315578182fd5b82516001600160a01b038116811461032b578283fd5b60208401519092506001600160401b0380821115610347578283fd5b818501915085601f83011261035a578283fd5b81518181111561036c5761036c61046a565b604051601f8201601f19908116603f011681019083821181831017156103945761039461046a565b816040528281528860208487010111156103ac578586fd5b6103bd83602083016020880161043e565b80955050505050509250929050565b600082516103de81846020870161043e565b9190910192915050565b600060208252825180602084015261040781604085016020870161043e565b601f01601f19169190910160400192915050565b60008282101561043957634e487b7160e01b81526011600452602481fd5b500390565b60005b83811015610459578181015183820152602001610441565b838111156100b95750506000910152565b634e487b7160e01b600052604160045260246000fd5b6102a88061048f6000396000f3fe60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220448dd684d5be885ae926495a8e40e1e1ed29b9dfe303bf49a0ae3d500334408564736f6c63430008030033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b61002761002261005e565b610096565b565b606061004e838360405180606001604052806027815260200161024c602791396100ba565b9392505050565b3b151590565b90565b60006100917f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100b5573d6000f35b3d6000fd5b6060833b61011e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084015b60405180910390fd5b600080856001600160a01b03168560405161013991906101cc565b600060405180830381855af49150503d8060008114610174576040519150601f19603f3d011682016040523d82523d6000602084013e610179565b606091505b5091509150610189828286610193565b9695505050505050565b606083156101a257508161004e565b8251156101b25782518084602001fd5b8160405162461bcd60e51b815260040161011591906101e8565b600082516101de81846020870161021b565b9190910192915050565b600060208252825180602084015261020781604085016020870161021b565b601f01601f19169190910160400192915050565b60005b8381101561023657818101518382015260200161021e565b83811115610245576000848401525b5050505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220448dd684d5be885ae926495a8e40e1e1ed29b9dfe303bf49a0ae3d500334408564736f6c63430008030033",
"bytecode": "0x608060405260405161073b38038061073b83398101604081905261002291610321565b61002e82826000610035565b505061043e565b61003e8361006b565b60008251118061004b5750805b156100665761006483836100ab60201b6100291760201c565b505b505050565b610074816100d7565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606100d08383604051806060016040528060278152602001610714602791396101a9565b9392505050565b6100ea8161022260201b6100551760201c565b6101515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084015b60405180910390fd5b806101887f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b61023160201b6100641760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6060600080856001600160a01b0316856040516101c691906103ef565b600060405180830381855af49150503d8060008114610201576040519150601f19603f3d011682016040523d82523d6000602084013e610206565b606091505b50909250905061021886838387610234565b9695505050505050565b6001600160a01b03163b151590565b90565b606083156102a357825160000361029c576001600160a01b0385163b61029c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610148565b50816102ad565b6102ad83836102b5565b949350505050565b8151156102c55781518083602001fd5b8060405162461bcd60e51b8152600401610148919061040b565b634e487b7160e01b600052604160045260246000fd5b60005b838110156103105781810151838201526020016102f8565b838111156100645750506000910152565b6000806040838503121561033457600080fd5b82516001600160a01b038116811461034b57600080fd5b60208401519092506001600160401b038082111561036857600080fd5b818501915085601f83011261037c57600080fd5b81518181111561038e5761038e6102df565b604051601f8201601f19908116603f011681019083821181831017156103b6576103b66102df565b816040528281528860208487010111156103cf57600080fd5b6103e08360208301602088016102f5565b80955050505050509250929050565b600082516104018184602087016102f5565b9190910192915050565b602081526000825180602084015261042a8160408501602087016102f5565b601f01601f19169190910160400192915050565b6102c78061044d6000396000f3fe60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161026b602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061021b565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f9190610237565b60005b838110156102065781810151838201526020016101ee565b83811115610215576000848401525b50505050565b6000825161022d8184602087016101eb565b9190910192915050565b60208152600082518060208401526102568160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122076c43ef7e83f3f5d4e9f67a47bb741a482d559078b0eb91b700166478c77577664736f6c634300080d0033416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b610027610022610067565b61009f565b565b606061004e838360405180606001604052806027815260200161026b602791396100c3565b9392505050565b6001600160a01b03163b151590565b90565b600061009a7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b3660008037600080366000845af43d6000803e8080156100be573d6000f35b3d6000fd5b6060600080856001600160a01b0316856040516100e0919061021b565b600060405180830381855af49150503d806000811461011b576040519150601f19603f3d011682016040523d82523d6000602084013e610120565b606091505b50915091506101318683838761013b565b9695505050505050565b606083156101af5782516000036101a8576001600160a01b0385163b6101a85760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064015b60405180910390fd5b50816101b9565b6101b983836101c1565b949350505050565b8151156101d15781518083602001fd5b8060405162461bcd60e51b815260040161019f9190610237565b60005b838110156102065781810151838201526020016101ee565b83811115610215576000848401525b50505050565b6000825161022d8184602087016101eb565b9190910192915050565b60208152600082518060208401526102568160408501602087016101eb565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a264697066735822122076c43ef7e83f3f5d4e9f67a47bb741a482d559078b0eb91b700166478c77577664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -243,3 +243,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -268,3 +268,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -274,3 +274,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -296,6 +296,6 @@ },

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000b4b38038062000b4b8339810160408190526200003491620001c1565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b5050506200027b565b828054620000769062000228565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200011f578081fd5b81516001600160401b03808211156200013c576200013c62000265565b604051601f8301601f19908116603f0116810190828211818310171562000167576200016762000265565b8160405283815260209250868385880101111562000183578485fd5b8491505b83821015620001a6578582018301518183018401529082019062000187565b83821115620001b757848385830101525b9695505050505050565b60008060408385031215620001d4578182fd5b82516001600160401b0380821115620001eb578384fd5b620001f9868387016200010e565b935060208501519150808211156200020f578283fd5b506200021e858286016200010e565b9150509250929050565b600181811c908216806200023d57607f821691505b602082108114156200025f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6108c0806200028b6000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b4114610149578063a457c2d714610151578063a9059cbb14610164578063dd62ed3e14610177576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101b0565b6040516100c391906107d8565b60405180910390f35b6100df6100da3660046107af565b610242565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610774565b610258565b604051601281526020016100c3565b6100df6101313660046107af565b610307565b6100f3610144366004610721565b610343565b6100b6610362565b6100df61015f3660046107af565b610371565b6100df6101723660046107af565b61040a565b6100f3610185366004610742565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101bf9061084f565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb9061084f565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600061024f338484610417565b50600192915050565b600061026584848461053b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156102ef5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6102fc8533858403610417565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161024f91859061033e90869061082b565b610417565b6001600160a01b0381166000908152602081905260409020545b919050565b6060600480546101bf9061084f565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102e6565b6104003385858403610417565b5060019392505050565b600061024f33848461053b565b6001600160a01b0383166104795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102e6565b6001600160a01b0382166104da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102e6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102e6565b6001600160a01b0382166106015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102e6565b6001600160a01b038316600090815260208190526040902054818110156106795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102e6565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106b090849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106fc91815260200190565b60405180910390a350505050565b80356001600160a01b038116811461035d57600080fd5b600060208284031215610732578081fd5b61073b8261070a565b9392505050565b60008060408385031215610754578081fd5b61075d8361070a565b915061076b6020840161070a565b90509250929050565b600080600060608486031215610788578081fd5b6107918461070a565b925061079f6020850161070a565b9150604084013590509250925092565b600080604083850312156107c1578182fd5b6107ca8361070a565b946020939093013593505050565b6000602080835283518082850152825b81811015610804578581018301518582016040015282016107e8565b818111156108155783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561084a57634e487b7160e01b81526011600452602481fd5b500190565b600181811c9082168061086357607f821691505b6020821081141561088457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122090692d8ed226aad51470ad6ef86dd5e33140b41556f029da194190c733fa223964736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b4114610149578063a457c2d714610151578063a9059cbb14610164578063dd62ed3e14610177576100a9565b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101b0565b6040516100c391906107d8565b60405180910390f35b6100df6100da3660046107af565b610242565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610774565b610258565b604051601281526020016100c3565b6100df6101313660046107af565b610307565b6100f3610144366004610721565b610343565b6100b6610362565b6100df61015f3660046107af565b610371565b6100df6101723660046107af565b61040a565b6100f3610185366004610742565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6060600380546101bf9061084f565b80601f01602080910402602001604051908101604052809291908181526020018280546101eb9061084f565b80156102385780601f1061020d57610100808354040283529160200191610238565b820191906000526020600020905b81548152906001019060200180831161021b57829003601f168201915b5050505050905090565b600061024f338484610417565b50600192915050565b600061026584848461053b565b6001600160a01b0384166000908152600160209081526040808320338452909152902054828110156102ef5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6102fc8533858403610417565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161024f91859061033e90869061082b565b610417565b6001600160a01b0381166000908152602081905260409020545b919050565b6060600480546101bf9061084f565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156103f35760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016102e6565b6104003385858403610417565b5060019392505050565b600061024f33848461053b565b6001600160a01b0383166104795760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016102e6565b6001600160a01b0382166104da5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016102e6565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03831661059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016102e6565b6001600160a01b0382166106015760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016102e6565b6001600160a01b038316600090815260208190526040902054818110156106795760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016102e6565b6001600160a01b038085166000908152602081905260408082208585039055918516815290812080548492906106b090849061082b565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516106fc91815260200190565b60405180910390a350505050565b80356001600160a01b038116811461035d57600080fd5b600060208284031215610732578081fd5b61073b8261070a565b9392505050565b60008060408385031215610754578081fd5b61075d8361070a565b915061076b6020840161070a565b90509250929050565b600080600060608486031215610788578081fd5b6107918461070a565b925061079f6020850161070a565b9150604084013590509250925092565b600080604083850312156107c1578182fd5b6107ca8361070a565b946020939093013593505050565b6000602080835283518082850152825b81811015610804578581018301518582016040015282016107e8565b818111156108155783604083870101525b50601f01601f1916929092016040019392505050565b6000821982111561084a57634e487b7160e01b81526011600452602481fd5b500190565b600181811c9082168061086357607f821691505b6020821081141561088457634e487b7160e01b600052602260045260246000fd5b5091905056fea264697066735822122090692d8ed226aad51470ad6ef86dd5e33140b41556f029da194190c733fa223964736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000aed38038062000aed8339810160408190526200003491620001db565b81516200004990600390602085019062000068565b5080516200005f90600490602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b61085c80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100a95760003560e01c80633950935111610071578063395093511461012357806370a082311461013657806395d89b411461015f578063a457c2d714610167578063a9059cbb1461017a578063dd62ed3e1461018d57600080fd5b806306fdde03146100ae578063095ea7b3146100cc57806318160ddd146100ef57806323b872dd14610101578063313ce56714610114575b600080fd5b6100b66101a0565b6040516100c3919061069a565b60405180910390f35b6100df6100da36600461070b565b610232565b60405190151581526020016100c3565b6002545b6040519081526020016100c3565b6100df61010f366004610735565b61024a565b604051601281526020016100c3565b6100df61013136600461070b565b61026e565b6100f3610144366004610771565b6001600160a01b031660009081526020819052604090205490565b6100b6610290565b6100df61017536600461070b565b61029f565b6100df61018836600461070b565b61031f565b6100f361019b366004610793565b61032d565b6060600380546101af906107c6565b80601f01602080910402602001604051908101604052809291908181526020018280546101db906107c6565b80156102285780601f106101fd57610100808354040283529160200191610228565b820191906000526020600020905b81548152906001019060200180831161020b57829003601f168201915b5050505050905090565b600033610240818585610358565b5060019392505050565b60003361025885828561047c565b6102638585856104f6565b506001949350505050565b600033610240818585610281838361032d565b61028b9190610800565b610358565b6060600480546101af906107c6565b600033816102ad828661032d565b9050838110156103125760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102638286868403610358565b6000336102408185856104f6565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166103ba5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610309565b6001600160a01b03821661041b5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610309565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610488848461032d565b905060001981146104f057818110156104e35760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610309565b6104f08484848403610358565b50505050565b6001600160a01b03831661055a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610309565b6001600160a01b0382166105bc5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610309565b6001600160a01b038316600090815260208190526040902054818110156106345760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610309565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a36104f0565b600060208083528351808285015260005b818110156106c7578581018301518582016040015282016106ab565b818111156106d9576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461070657600080fd5b919050565b6000806040838503121561071e57600080fd5b610727836106ef565b946020939093013593505050565b60008060006060848603121561074a57600080fd5b610753846106ef565b9250610761602085016106ef565b9150604084013590509250925092565b60006020828403121561078357600080fd5b61078c826106ef565b9392505050565b600080604083850312156107a657600080fd5b6107af836106ef565b91506107bd602084016106ef565b90509250929050565b600181811c908216806107da57607f821691505b6020821081036107fa57634e487b7160e01b600052602260045260246000fd5b50919050565b6000821982111561082157634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220e7dc257596a973556752e9db5f465b21aad78d068ae819d0395e1f99a95065a964736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -258,3 +258,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -283,3 +283,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -289,3 +289,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -292,0 +292,0 @@ },

@@ -240,3 +240,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -265,3 +265,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -271,3 +271,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -274,0 +274,0 @@ },

@@ -304,3 +304,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -329,3 +329,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -335,3 +335,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -338,0 +338,0 @@ },

@@ -266,3 +266,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -291,3 +291,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -297,3 +297,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -300,0 +300,0 @@ },

{
"_format": "hh-sol-artifact-1",
"contractName": "ERC20Permit",
"sourceName": "contracts/token/ERC20/extensions/draft-ERC20Permit.sol",
"sourceName": "contracts/token/ERC20/extensions/ERC20Permit.sol",
"abi": [
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,

@@ -33,2 +49,8 @@ "inputs": [

"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -175,2 +197,45 @@ {

{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [

@@ -304,3 +369,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -329,3 +394,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -335,3 +400,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -338,0 +403,0 @@ },

@@ -284,3 +284,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -309,3 +309,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -315,3 +315,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -337,6 +337,6 @@ },

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000f0438038062000f048339810160408190526200003491620002c3565b8351849084906200004d9060039060208501906200016a565b508051620000639060049060208401906200016a565b5050506200007881836200008260201b60201c565b50505050620003cc565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000354565b90915550506001600160a01b038216600090815260208190526040812080548392906200012090849062000354565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b828054620001789062000379565b90600052602060002090601f0160209004810192826200019c5760008555620001e7565b82601f10620001b757805160ff1916838001178555620001e7565b82800160010185558215620001e7579182015b82811115620001e7578251825591602001919060010190620001ca565b50620001f5929150620001f9565b5090565b5b80821115620001f55760008155600101620001fa565b600082601f83011262000221578081fd5b81516001600160401b03808211156200023e576200023e620003b6565b604051601f8301601f19908116603f01168101908282118183101715620002695762000269620003b6565b8160405283815260209250868385880101111562000285578485fd5b8491505b83821015620002a8578582018301518183018401529082019062000289565b83821115620002b957848385830101525b9695505050505050565b60008060008060808587031215620002d9578384fd5b84516001600160401b0380821115620002f0578586fd5b620002fe8883890162000210565b9550602087015191508082111562000314578485fd5b50620003238782880162000210565b60408701516060880151919550935090506001600160a01b038116811462000349578182fd5b939692955090935050565b600082198211156200037457634e487b7160e01b81526011600452602481fd5b500190565b600181811c908216806200038e57607f821691505b60208210811415620003b057634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b610b2880620003dc6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610197578063a457c2d71461019f578063a9059cbb146101b2578063dd62ed3e146101c5576100cf565b806342966c681461015c57806370a082311461017157806379cc679014610184576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101fe565b6040516100e99190610a1f565b60405180910390f35b6101056101003660046109de565b610290565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046109a3565b6102a6565b604051601281526020016100e9565b6101056101573660046109de565b610355565b61016f61016a366004610a07565b610391565b005b61011961017f366004610950565b61039e565b61016f6101923660046109de565b6103bd565b6100dc610443565b6101056101ad3660046109de565b610452565b6101056101c03660046109de565b6104eb565b6101196101d3366004610971565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020d90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610aa1565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b5050505050905090565b600061029d3384846104f8565b50600192915050565b60006102b384848461061c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561033d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61034a85338584036104f8565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161029d91859061038c908690610a72565b6104f8565b61039b33826107eb565b50565b6001600160a01b0381166000908152602081905260409020545b919050565b60006103c983336101d3565b9050818110156104275760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610334565b61043483338484036104f8565b61043e83836107eb565b505050565b60606004805461020d90610aa1565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156104d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610334565b6104e133858584036104f8565b5060019392505050565b600061029d33848461061c565b6001600160a01b03831661055a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610334565b6001600160a01b0382166105bb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610334565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610334565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610334565b6001600160a01b0383166000908152602081905260409020548181101561075a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610334565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610791908490610a72565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107dd91815260200190565b60405180910390a350505050565b6001600160a01b03821661084b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610334565b6001600160a01b038216600090815260208190526040902054818110156108bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610334565b6001600160a01b03831660009081526020819052604081208383039055600280548492906108ee908490610a8a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361043e565b80356001600160a01b03811681146103b857600080fd5b600060208284031215610961578081fd5b61096a82610939565b9392505050565b60008060408385031215610983578081fd5b61098c83610939565b915061099a60208401610939565b90509250929050565b6000806000606084860312156109b7578081fd5b6109c084610939565b92506109ce60208501610939565b9150604084013590509250925092565b600080604083850312156109f0578182fd5b6109f983610939565b946020939093013593505050565b600060208284031215610a18578081fd5b5035919050565b6000602080835283518082850152825b81811015610a4b57858101830151858201604001528201610a2f565b81811115610a5c5783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610a8557610a85610adc565b500190565b600082821015610a9c57610a9c610adc565b500390565b600181811c90821680610ab557607f821691505b60208210811415610ad657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206d9c7d5c2d8c9ac9e228bd2609cefd6c90fb8c428244e6b0890acbb36b707e3464736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b4114610197578063a457c2d71461019f578063a9059cbb146101b2578063dd62ed3e146101c5576100cf565b806342966c681461015c57806370a082311461017157806379cc679014610184576100cf565b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101fe565b6040516100e99190610a1f565b60405180910390f35b6101056101003660046109de565b610290565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046109a3565b6102a6565b604051601281526020016100e9565b6101056101573660046109de565b610355565b61016f61016a366004610a07565b610391565b005b61011961017f366004610950565b61039e565b61016f6101923660046109de565b6103bd565b6100dc610443565b6101056101ad3660046109de565b610452565b6101056101c03660046109de565b6104eb565b6101196101d3366004610971565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b60606003805461020d90610aa1565b80601f016020809104026020016040519081016040528092919081815260200182805461023990610aa1565b80156102865780601f1061025b57610100808354040283529160200191610286565b820191906000526020600020905b81548152906001019060200180831161026957829003601f168201915b5050505050905090565b600061029d3384846104f8565b50600192915050565b60006102b384848461061c565b6001600160a01b03841660009081526001602090815260408083203384529091529020548281101561033d5760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b61034a85338584036104f8565b506001949350505050565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909161029d91859061038c908690610a72565b6104f8565b61039b33826107eb565b50565b6001600160a01b0381166000908152602081905260409020545b919050565b60006103c983336101d3565b9050818110156104275760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b6064820152608401610334565b61043483338484036104f8565b61043e83836107eb565b505050565b60606004805461020d90610aa1565b3360009081526001602090815260408083206001600160a01b0386168452909152812054828110156104d45760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610334565b6104e133858584036104f8565b5060019392505050565b600061029d33848461061c565b6001600160a01b03831661055a5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610334565b6001600160a01b0382166105bb5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610334565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166106805760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610334565b6001600160a01b0382166106e25760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610334565b6001600160a01b0383166000908152602081905260409020548181101561075a5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610334565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610791908490610a72565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516107dd91815260200190565b60405180910390a350505050565b6001600160a01b03821661084b5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610334565b6001600160a01b038216600090815260208190526040902054818110156108bf5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610334565b6001600160a01b03831660009081526020819052604081208383039055600280548492906108ee908490610a8a565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a361043e565b80356001600160a01b03811681146103b857600080fd5b600060208284031215610961578081fd5b61096a82610939565b9392505050565b60008060408385031215610983578081fd5b61098c83610939565b915061099a60208401610939565b90509250929050565b6000806000606084860312156109b7578081fd5b6109c084610939565b92506109ce60208501610939565b9150604084013590509250925092565b600080604083850312156109f0578182fd5b6109f983610939565b946020939093013593505050565b600060208284031215610a18578081fd5b5035919050565b6000602080835283518082850152825b81811015610a4b57858101830151858201604001528201610a2f565b81811115610a5c5783604083870101525b50601f01601f1916929092016040019392505050565b60008219821115610a8557610a85610adc565b500190565b600082821015610a9c57610a9c610adc565b500390565b600181811c90821680610ab557607f821691505b60208210811415610ad657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212206d9c7d5c2d8c9ac9e228bd2609cefd6c90fb8c428244e6b0890acbb36b707e3464736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162000dd738038062000dd78339810160408190526200003491620002bb565b8351849084906200004d90600390602085019062000148565b5080516200006390600490602084019062000148565b5050506200007881836200008260201b60201c565b50505050620003b3565b6001600160a01b038216620000dd5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640160405180910390fd5b8060026000828254620000f1919062000350565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b828054620001569062000377565b90600052602060002090601f0160209004810192826200017a5760008555620001c5565b82601f106200019557805160ff1916838001178555620001c5565b82800160010185558215620001c5579182015b82811115620001c5578251825591602001919060010190620001a8565b50620001d3929150620001d7565b5090565b5b80821115620001d35760008155600101620001d8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200021657600080fd5b81516001600160401b0380821115620002335762000233620001ee565b604051601f8301601f19908116603f011681019082821181831017156200025e576200025e620001ee565b816040528381526020925086838588010111156200027b57600080fd5b600091505b838210156200029f578582018301518183018401529082019062000280565b83821115620002b15760008385830101525b9695505050505050565b60008060008060808587031215620002d257600080fd5b84516001600160401b0380821115620002ea57600080fd5b620002f88883890162000204565b955060208701519150808211156200030f57600080fd5b506200031e8782880162000204565b60408701516060880151919550935090506001600160a01b03811681146200034557600080fd5b939692955090935050565b600082198211156200037257634e487b7160e01b600052601160045260246000fd5b500190565b600181811c908216806200038c57607f821691505b602082108103620003ad57634e487b7160e01b600052602260045260246000fd5b50919050565b610a1480620003c36000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e99190610839565b60405180910390f35b6101056101003660046108aa565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046108d4565b610298565b604051601281526020016100e9565b6101056101573660046108aa565b6102bc565b61016f61016a366004610910565b6102de565b005b61011961017f366004610929565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108aa565b6102eb565b6100dc610304565b6101056101c33660046108aa565b610313565b6101056101d63660046108aa565b610393565b6101196101e936600461094b565b6103a1565b6060600380546101fd9061097e565b80601f01602080910402602001604051908101604052809291908181526020018280546102299061097e565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d991906109b8565b6103cc565b6102e8338261070f565b50565b6102f68233836104f1565b610300828261070f565b5050565b6060600480546101fd9061097e565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610565565b6001600160a01b03821661076f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b038216600090815260208190526040902054818110156107e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104e4565b600060208083528351808285015260005b818110156108665785810183015185820160400152820161084a565b81811115610878576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108a557600080fd5b919050565b600080604083850312156108bd57600080fd5b6108c68361088e565b946020939093013593505050565b6000806000606084860312156108e957600080fd5b6108f28461088e565b92506109006020850161088e565b9150604084013590509250925092565b60006020828403121561092257600080fd5b5035919050565b60006020828403121561093b57600080fd5b6109448261088e565b9392505050565b6000806040838503121561095e57600080fd5b6109678361088e565b91506109756020840161088e565b90509250929050565b600181811c9082168061099257607f821691505b6020821081036109b257634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156109d957634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220425144f5df3cf3550ee4191ed0afa4538ae90c257bcb6a46cba7ffb43eb4e29164736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c806342966c681161008c57806395d89b411161006657806395d89b41146101ad578063a457c2d7146101b5578063a9059cbb146101c8578063dd62ed3e146101db57600080fd5b806342966c681461015c57806370a082311461017157806379cc67901461019a57600080fd5b806306fdde03146100d4578063095ea7b3146100f257806318160ddd1461011557806323b872dd14610127578063313ce5671461013a5780633950935114610149575b600080fd5b6100dc6101ee565b6040516100e99190610839565b60405180910390f35b6101056101003660046108aa565b610280565b60405190151581526020016100e9565b6002545b6040519081526020016100e9565b6101056101353660046108d4565b610298565b604051601281526020016100e9565b6101056101573660046108aa565b6102bc565b61016f61016a366004610910565b6102de565b005b61011961017f366004610929565b6001600160a01b031660009081526020819052604090205490565b61016f6101a83660046108aa565b6102eb565b6100dc610304565b6101056101c33660046108aa565b610313565b6101056101d63660046108aa565b610393565b6101196101e936600461094b565b6103a1565b6060600380546101fd9061097e565b80601f01602080910402602001604051908101604052809291908181526020018280546102299061097e565b80156102765780601f1061024b57610100808354040283529160200191610276565b820191906000526020600020905b81548152906001019060200180831161025957829003601f168201915b5050505050905090565b60003361028e8185856103cc565b5060019392505050565b6000336102a68582856104f1565b6102b185858561056b565b506001949350505050565b60003361028e8185856102cf83836103a1565b6102d991906109b8565b6103cc565b6102e8338261070f565b50565b6102f68233836104f1565b610300828261070f565b5050565b6060600480546101fd9061097e565b6000338161032182866103a1565b9050838110156103865760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084015b60405180910390fd5b6102b182868684036103cc565b60003361028e81858561056b565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b03831661042e5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161037d565b6001600160a01b03821661048f5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161037d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006104fd84846103a1565b9050600019811461056557818110156105585760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161037d565b61056584848484036103cc565b50505050565b6001600160a01b0383166105cf5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161037d565b6001600160a01b0382166106315760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161037d565b6001600160a01b038316600090815260208190526040902054818110156106a95760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161037d565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3610565565b6001600160a01b03821661076f5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161037d565b6001600160a01b038216600090815260208190526040902054818110156107e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161037d565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91016104e4565b600060208083528351808285015260005b818110156108665785810183015185820160400152820161084a565b81811115610878576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b03811681146108a557600080fd5b919050565b600080604083850312156108bd57600080fd5b6108c68361088e565b946020939093013593505050565b6000806000606084860312156108e957600080fd5b6108f28461088e565b92506109006020850161088e565b9150604084013590509250925092565b60006020828403121561092257600080fd5b5035919050565b60006020828403121561093b57600080fd5b6109448261088e565b9392505050565b6000806040838503121561095e57600080fd5b6109678361088e565b91506109756020840161088e565b90509250929050565b600181811c9082168061099257607f821691505b6020821081036109b257634e487b7160e01b600052602260045260246000fd5b50919050565b600082198211156109d957634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220425144f5df3cf3550ee4191ed0afa4538ae90c257bcb6a46cba7ffb43eb4e29164736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -611,3 +611,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -636,3 +636,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -642,3 +642,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -671,6 +671,6 @@ },

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001e2538038062001e2583398101604081905262000034916200039c565b8151829082906200004d90600590602085019062000243565b5080516200006390600690602084019062000243565b50506007805460ff19169055506200007e6000335b620000de565b620000aa7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a63362000078565b620000d67f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a3362000078565b505062000456565b620000ea8282620000ee565b5050565b6200010582826200013160201b62000a651760201c565b60008281526001602090815260409091206200012c91839062000ae9620001d1821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000ea576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e8836001600160a01b038416620001f1565b90505b92915050565b60008181526001830160205260408120546200023a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001eb565b506000620001eb565b828054620002519062000403565b90600052602060002090601f016020900481019282620002755760008555620002c0565b82601f106200029057805160ff1916838001178555620002c0565b82800160010185558215620002c0579182015b82811115620002c0578251825591602001919060010190620002a3565b50620002ce929150620002d2565b5090565b5b80821115620002ce5760008155600101620002d3565b600082601f830112620002fa578081fd5b81516001600160401b038082111562000317576200031762000440565b604051601f8301601f19908116603f0116810190828211818310171562000342576200034262000440565b816040528381526020925086838588010111156200035e578485fd5b8491505b8382101562000381578582018301518183018401529082019062000362565b838211156200039257848385830101525b9695505050505050565b60008060408385031215620003af578182fd5b82516001600160401b0380821115620003c6578384fd5b620003d486838701620002e9565b93506020850151915080821115620003ea578283fd5b50620003f985828601620002e9565b9150509250929050565b600181811c908216806200041857607f821691505b602082108114156200043a57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b6119bf80620004666000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e914610422576101c4565b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c576101c4565b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e576101c4565b806370a08231146102e457806379cc67901461030d5780638456cb5914610320576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d9576101c4565b8063313ce5671461027657806336568abe146102855780633950935114610298576101c4565b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d14610261576101c4565b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046117d7565b610449565b60405190151581526020015b60405180910390f35b6101f9610476565b6040516101e89190611874565b6101dc610214366004611753565b610508565b6004545b6040519081526020016101e8565b6101dc610239366004611718565b61051f565b61021d61024c36600461177c565b60009081526020819052604090206001015490565b61027461026f366004611794565b6105ce565b005b604051601281526020016101e8565b610274610293366004611794565b6105fa565b6101dc6102a6366004611753565b610678565b6102746106b4565b6102746102c1366004611753565b61075a565b6102746102d436600461177c565b6107f9565b60075460ff166101dc565b61021d6102f23660046116cc565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611753565b610806565b610274610887565b61033b6103363660046117b6565b61092b565b6040516001600160a01b0390911681526020016101e8565b6101dc610361366004611794565b61094a565b6101f9610973565b61021d600081565b6101dc610384366004611753565b610982565b6101dc610397366004611753565b610a1b565b61021d6103aa36600461177c565b610a28565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e4366004611794565b610a3f565b61021d6103f73660046116e6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610afe565b90505b919050565b60606005805461048590611938565b80601f01602080910402602001604051908101604052809291908181526020018280546104b190611938565b80156104fe5780601f106104d3576101008083540402835291602001916104fe565b820191906000526020600020905b8154815290600101906020018083116104e157829003601f168201915b5050505050905090565b6000610515338484610b33565b5060015b92915050565b600061052c848484610c57565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156105b65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105c38533858403610b33565b506001949350505050565b6000828152602081905260409020600101546105eb81335b610e32565b6105f58383610e96565b505050565b6001600160a01b038116331461066a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ad565b6106748282610eb8565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916105159185906106af9086906118a7565b610b33565b6106de7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610361565b6107505760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105ad565b610758610eda565b565b6107847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610361565b6107ef5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105ad565b6106748282610f6d565b6108033382611059565b50565b600061081283336103f7565b9050818110156108705760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016105ad565b61087d8333848403610b33565b6105f58383611059565b6108b17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610361565b6109235760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105ad565b6107586111b3565b6000828152600160205260408120610943908361122e565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048590611938565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610a045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105ad565b610a113385858403610b33565b5060019392505050565b6000610515338484610c57565b600081815260016020526040812061046e9061123a565b600082815260208190526040902060010154610a5b81336105e6565b6105f58383610eb8565b610a6f828261094a565b610674576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610aa53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610943836001600160a01b038416611244565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610b955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ad565b6001600160a01b038216610bf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ad565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ad565b6001600160a01b038216610d1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ad565b610d28838383611293565b6001600160a01b03831660009081526002602052604090205481811015610da05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105ad565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610dd79084906118a7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e2391815260200190565b60405180910390a35b50505050565b610e3c828261094a565b61067457610e54816001600160a01b0316601461129e565b610e5f83602061129e565b604051602001610e709291906117ff565b60408051601f198184030181529082905262461bcd60e51b82526105ad91600401611874565b610ea08282610a65565b60008281526001602052604090206105f59082610ae9565b610ec28282611480565b60008281526001602052604090206105f590826114e5565b60075460ff16610f235760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ad565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610fc35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ad565b610fcf60008383611293565b8060046000828254610fe191906118a7565b90915550506001600160a01b0382166000908152600260205260408120805483929061100e9084906118a7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610674565b6001600160a01b0382166110b95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105ad565b6110c582600083611293565b6001600160a01b038216600090815260026020526040902054818110156111395760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105ad565b6001600160a01b03831660009081526002602052604081208383039055600480548492906111689084906118de565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36105f5565b60075460ff16156111f95760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ad565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f503390565b600061094383836114fa565b600061046e825490565b600081815260018301602052604081205461128b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610519565b506000610519565b6105f5838383611532565b606060006112ad8360026118bf565b6112b89060026118a7565b67ffffffffffffffff8111156112de57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611308576020820181803683370190505b509050600360fc1b8160008151811061133157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061136e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006113928460026118bf565b61139d9060016118a7565b90505b6001811115611431576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113df57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061140357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361142a81611921565b90506113a0565b5083156109435760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ad565b61148a828261094a565b15610674576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610943836001600160a01b038416611598565b600082600001828154811061151f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60075460ff16156105f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105ad565b600081815260018301602052604081205480156116ab5760006115bc6001836118de565b85549091506000906115d0906001906118de565b90508181146116515760008660000182815481106115fe57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061162f57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061167057634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610519565b6000915050610519565b80356001600160a01b038116811461047157600080fd5b6000602082840312156116dd578081fd5b610943826116b5565b600080604083850312156116f8578081fd5b611701836116b5565b915061170f602084016116b5565b90509250929050565b60008060006060848603121561172c578081fd5b611735846116b5565b9250611743602085016116b5565b9150604084013590509250925092565b60008060408385031215611765578182fd5b61176e836116b5565b946020939093013593505050565b60006020828403121561178d578081fd5b5035919050565b600080604083850312156117a6578182fd5b8235915061170f602084016116b5565b600080604083850312156117c8578182fd5b50508035926020909101359150565b6000602082840312156117e8578081fd5b81356001600160e01b031981168114610943578182fd5b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516118378160178501602088016118f5565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118688160288401602088016118f5565b01602801949350505050565b60006020825282518060208401526118938160408501602087016118f5565b601f01601f19169190910160400192915050565b600082198211156118ba576118ba611973565b500190565b60008160001904831182151516156118d9576118d9611973565b500290565b6000828210156118f0576118f0611973565b500390565b60005b838110156119105781810151838201526020016118f8565b83811115610e2c5750506000910152565b60008161193057611930611973565b506000190190565b600181811c9082168061194c57607f821691505b6020821081141561196d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220fcb082131f8a47cf93c54376949595a5e301e099f7ef16f8e0ccba12a948d11364736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e914610422576101c4565b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c576101c4565b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e576101c4565b806370a08231146102e457806379cc67901461030d5780638456cb5914610320576101c4565b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d9576101c4565b8063313ce5671461027657806336568abe146102855780633950935114610298576101c4565b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d14610261576101c4565b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d73660046117d7565b610449565b60405190151581526020015b60405180910390f35b6101f9610476565b6040516101e89190611874565b6101dc610214366004611753565b610508565b6004545b6040519081526020016101e8565b6101dc610239366004611718565b61051f565b61021d61024c36600461177c565b60009081526020819052604090206001015490565b61027461026f366004611794565b6105ce565b005b604051601281526020016101e8565b610274610293366004611794565b6105fa565b6101dc6102a6366004611753565b610678565b6102746106b4565b6102746102c1366004611753565b61075a565b6102746102d436600461177c565b6107f9565b60075460ff166101dc565b61021d6102f23660046116cc565b6001600160a01b031660009081526002602052604090205490565b61027461031b366004611753565b610806565b610274610887565b61033b6103363660046117b6565b61092b565b6040516001600160a01b0390911681526020016101e8565b6101dc610361366004611794565b61094a565b6101f9610973565b61021d600081565b6101dc610384366004611753565b610982565b6101dc610397366004611753565b610a1b565b61021d6103aa36600461177c565b610a28565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e4366004611794565b610a3f565b61021d6103f73660046116e6565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b148061046e575061046e82610afe565b90505b919050565b60606005805461048590611938565b80601f01602080910402602001604051908101604052809291908181526020018280546104b190611938565b80156104fe5780601f106104d3576101008083540402835291602001916104fe565b820191906000526020600020905b8154815290600101906020018083116104e157829003601f168201915b5050505050905090565b6000610515338484610b33565b5060015b92915050565b600061052c848484610c57565b6001600160a01b0384166000908152600360209081526040808320338452909152902054828110156105b65760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b60648201526084015b60405180910390fd5b6105c38533858403610b33565b506001949350505050565b6000828152602081905260409020600101546105eb81335b610e32565b6105f58383610e96565b505050565b6001600160a01b038116331461066a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ad565b6106748282610eb8565b5050565b3360008181526003602090815260408083206001600160a01b038716845290915281205490916105159185906106af9086906118a7565b610b33565b6106de7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610361565b6107505760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105ad565b610758610eda565b565b6107847f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610361565b6107ef5760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105ad565b6106748282610f6d565b6108033382611059565b50565b600061081283336103f7565b9050818110156108705760405162461bcd60e51b8152602060048201526024808201527f45524332303a206275726e20616d6f756e74206578636565647320616c6c6f77604482015263616e636560e01b60648201526084016105ad565b61087d8333848403610b33565b6105f58383611059565b6108b17f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610361565b6109235760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105ad565b6107586111b3565b6000828152600160205260408120610943908361122e565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461048590611938565b3360009081526003602090815260408083206001600160a01b038616845290915281205482811015610a045760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105ad565b610a113385858403610b33565b5060019392505050565b6000610515338484610c57565b600081815260016020526040812061046e9061123a565b600082815260208190526040902060010154610a5b81336105e6565b6105f58383610eb8565b610a6f828261094a565b610674576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610aa53390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610943836001600160a01b038416611244565b60006001600160e01b03198216637965db0b60e01b148061046e57506301ffc9a760e01b6001600160e01b031983161461046e565b6001600160a01b038316610b955760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105ad565b6001600160a01b038216610bf65760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105ad565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610cbb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105ad565b6001600160a01b038216610d1d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105ad565b610d28838383611293565b6001600160a01b03831660009081526002602052604090205481811015610da05760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105ad565b6001600160a01b03808516600090815260026020526040808220858503905591851681529081208054849290610dd79084906118a7565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610e2391815260200190565b60405180910390a35b50505050565b610e3c828261094a565b61067457610e54816001600160a01b0316601461129e565b610e5f83602061129e565b604051602001610e709291906117ff565b60408051601f198184030181529082905262461bcd60e51b82526105ad91600401611874565b610ea08282610a65565b60008281526001602052604090206105f59082610ae9565b610ec28282611480565b60008281526001602052604090206105f590826114e5565b60075460ff16610f235760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ad565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610fc35760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105ad565b610fcf60008383611293565b8060046000828254610fe191906118a7565b90915550506001600160a01b0382166000908152600260205260408120805483929061100e9084906118a7565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3610674565b6001600160a01b0382166110b95760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105ad565b6110c582600083611293565b6001600160a01b038216600090815260026020526040902054818110156111395760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105ad565b6001600160a01b03831660009081526002602052604081208383039055600480548492906111689084906118de565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a36105f5565b60075460ff16156111f95760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ad565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610f503390565b600061094383836114fa565b600061046e825490565b600081815260018301602052604081205461128b57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610519565b506000610519565b6105f5838383611532565b606060006112ad8360026118bf565b6112b89060026118a7565b67ffffffffffffffff8111156112de57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611308576020820181803683370190505b509050600360fc1b8160008151811061133157634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061136e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006113928460026118bf565b61139d9060016118a7565b90505b6001811115611431576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113df57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061140357634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c9361142a81611921565b90506113a0565b5083156109435760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ad565b61148a828261094a565b15610674576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610943836001600160a01b038416611598565b600082600001828154811061151f57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60075460ff16156105f55760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105ad565b600081815260018301602052604081205480156116ab5760006115bc6001836118de565b85549091506000906115d0906001906118de565b90508181146116515760008660000182815481106115fe57634e487b7160e01b600052603260045260246000fd5b906000526020600020015490508087600001848154811061162f57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b855486908061167057634e487b7160e01b600052603160045260246000fd5b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610519565b6000915050610519565b80356001600160a01b038116811461047157600080fd5b6000602082840312156116dd578081fd5b610943826116b5565b600080604083850312156116f8578081fd5b611701836116b5565b915061170f602084016116b5565b90509250929050565b60008060006060848603121561172c578081fd5b611735846116b5565b9250611743602085016116b5565b9150604084013590509250925092565b60008060408385031215611765578182fd5b61176e836116b5565b946020939093013593505050565b60006020828403121561178d578081fd5b5035919050565b600080604083850312156117a6578182fd5b8235915061170f602084016116b5565b600080604083850312156117c8578182fd5b50508035926020909101359150565b6000602082840312156117e8578081fd5b81356001600160e01b031981168114610943578182fd5b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516118378160178501602088016118f5565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516118688160288401602088016118f5565b01602801949350505050565b60006020825282518060208401526118938160408501602087016118f5565b601f01601f19169190910160400192915050565b600082198211156118ba576118ba611973565b500190565b60008160001904831182151516156118d9576118d9611973565b500290565b6000828210156118f0576118f0611973565b500390565b60005b838110156119105781810151838201526020016118f8565b83811115610e2c5750506000910152565b60008161193057611930611973565b506000190190565b600181811c9082168061194c57607f821691505b6020821081141561196d57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fdfea2646970667358221220fcb082131f8a47cf93c54376949595a5e301e099f7ef16f8e0ccba12a948d11364736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001d1038038062001d108339810160408190526200003491620003b5565b8151829082906200004d90600590602085019062000242565b5080516200006390600690602084019062000242565b50506007805460ff19169055506200007d600033620000dd565b620000a97f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000dd565b620000d57f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000dd565b50506200045b565b620000e98282620000ed565b5050565b6200010482826200013060201b6200093d1760201c565b60008281526001602090815260409091206200012b918390620009c1620001d0821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff16620000e9576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556200018c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001e7836001600160a01b038416620001f0565b90505b92915050565b60008181526001830160205260408120546200023957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620001ea565b506000620001ea565b82805462000250906200041f565b90600052602060002090601f016020900481019282620002745760008555620002bf565b82601f106200028f57805160ff1916838001178555620002bf565b82800160010185558215620002bf579182015b82811115620002bf578251825591602001919060010190620002a2565b50620002cd929150620002d1565b5090565b5b80821115620002cd5760008155600101620002d2565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200031057600080fd5b81516001600160401b03808211156200032d576200032d620002e8565b604051601f8301601f19908116603f01168101908282118183101715620003585762000358620002e8565b816040528381526020925086838588010111156200037557600080fd5b600091505b838210156200039957858201830151818301840152908201906200037a565b83821115620003ab5760008385830101525b9695505050505050565b60008060408385031215620003c957600080fd5b82516001600160401b0380821115620003e157600080fd5b620003ef86838701620002fe565b935060208501519150808211156200040657600080fd5b506200041585828601620002fe565b9150509250929050565b600181811c908216806200043457607f821691505b6020821081036200045557634e487b7160e01b600052602260045260246000fd5b50919050565b6118a5806200046b6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d736600461154c565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115a2565b6101dc6102143660046115f1565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461161b565b6104f8565b61021d61024c366004611657565b60009081526020819052604090206001015490565b61027461026f366004611670565b61051c565b005b604051601281526020016101e8565b610274610293366004611670565b610546565b6101dc6102a63660046115f1565b6105c9565b6102746105eb565b6102746102c13660046115f1565b610691565b6102746102d4366004611657565b610730565b60075460ff166101dc565b61021d6102f236600461169c565b6001600160a01b031660009081526002602052604090205490565b61027461031b3660046115f1565b61073d565b610274610752565b61033b6103363660046116b7565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc610361366004611670565b610815565b6101f961083e565b61021d600081565b6101dc6103843660046115f1565b61084d565b6101dc6103973660046115f1565b6108c8565b61021d6103aa366004611657565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e4366004611670565b6108ed565b61021d6103f73660046116d9565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611703565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611703565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d5f565b6105418383610d69565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610d8b565b5050565b6000336104ee8185856105dc8383610912565b6105e69190611753565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dad565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610dff565b61073a3382610ecc565b50565b610748823383610b2f565b6105c58282610ecc565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f61100c565b600082815260016020526040812061080e9083611049565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611703565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b600081815260016020526040812061044890611055565b60008281526020819052604090206001015461090881610d5f565b6105418383610d8b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b03841661105f565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a8383836110ae565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d529086815260200190565b60405180910390a3610ba3565b61073a81336110b9565b610d73828261093d565b600082815260016020526040902061054190826109c1565b610d958282611112565b60008281526001602052604090206105419082611177565b610db561118c565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e555760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e61600083836110ae565b8060046000828254610e739190611753565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610f2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f38826000836110ae565b6001600160a01b03821660009081526002602052604090205481811015610fac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6110146111d5565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de23390565b600061080e838361121b565b6000610448825490565b60008181526001830160205260408120546110a657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b610541838383611245565b6110c38282610815565b6105c5576110d0816112ab565b6110db8360206112bd565b6040516020016110ec92919061176b565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115a2565b61111c8282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b038416611459565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b6000826000018281548110611232576112326117e0565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606104486001600160a01b03831660145b606060006112cc8360026117f6565b6112d7906002611753565b67ffffffffffffffff8111156112ef576112ef611815565b6040519080825280601f01601f191660200182016040528015611319576020820181803683370190505b509050600360fc1b81600081518110611334576113346117e0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611363576113636117e0565b60200101906001600160f81b031916908160001a90535060006113878460026117f6565b611392906001611753565b90505b600181111561140a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113c6576113c66117e0565b1a60f81b8282815181106113dc576113dc6117e0565b60200101906001600160f81b031916908160001a90535060049490941c936114038161182b565b9050611395565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b6000818152600183016020526040812054801561154257600061147d600183611842565b855490915060009061149190600190611842565b90508181146114f65760008660000182815481106114b1576114b16117e0565b90600052602060002001549050808760000184815481106114d4576114d46117e0565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061150757611507611859565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b60006020828403121561155e57600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b83811015611591578181015183820152602001611579565b83811115610ba35750506000910152565b60208152600082518060208401526115c1816040850160208701611576565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146115ec57600080fd5b919050565b6000806040838503121561160457600080fd5b61160d836115d5565b946020939093013593505050565b60008060006060848603121561163057600080fd5b611639846115d5565b9250611647602085016115d5565b9150604084013590509250925092565b60006020828403121561166957600080fd5b5035919050565b6000806040838503121561168357600080fd5b82359150611693602084016115d5565b90509250929050565b6000602082840312156116ae57600080fd5b61080e826115d5565b600080604083850312156116ca57600080fd5b50508035926020909101359150565b600080604083850312156116ec57600080fd5b6116f5836115d5565b9150611693602084016115d5565b600181811c9082168061171757607f821691505b60208210810361173757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117665761176661173d565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516117a3816017850160208801611576565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117d4816028840160208801611576565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156118105761181061173d565b500290565b634e487b7160e01b600052604160045260246000fd5b60008161183a5761183a61173d565b506000190190565b6000828210156118545761185461173d565b500390565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203555e31cce90e73428bd55d1113c2e0b9b5a9d364695f4eed684cee3a00098e664736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806370a08231116100f9578063a457c2d711610097578063d539139311610071578063d5391393146103af578063d547741f146103d6578063dd62ed3e146103e9578063e63ab1e9146103fc57600080fd5b8063a457c2d714610376578063a9059cbb14610389578063ca15c8731461039c57600080fd5b80639010d07c116100d35780639010d07c1461032857806391d148541461035357806395d89b4114610366578063a217fddf1461036e57600080fd5b806370a08231146102e457806379cc67901461030d5780638456cb591461032057600080fd5b8063313ce567116101665780633f4ba83a116101405780633f4ba83a146102ab57806340c10f19146102b357806342966c68146102c65780635c975abb146102d957600080fd5b8063313ce5671461027657806336568abe14610285578063395093511461029857600080fd5b806318160ddd116101a257806318160ddd1461021957806323b872dd1461022b578063248a9ca31461023e5780632f2ff15d1461026157600080fd5b806301ffc9a7146101c957806306fdde03146101f1578063095ea7b314610206575b600080fd5b6101dc6101d736600461154c565b610423565b60405190151581526020015b60405180910390f35b6101f961044e565b6040516101e891906115a2565b6101dc6102143660046115f1565b6104e0565b6004545b6040519081526020016101e8565b6101dc61023936600461161b565b6104f8565b61021d61024c366004611657565b60009081526020819052604090206001015490565b61027461026f366004611670565b61051c565b005b604051601281526020016101e8565b610274610293366004611670565b610546565b6101dc6102a63660046115f1565b6105c9565b6102746105eb565b6102746102c13660046115f1565b610691565b6102746102d4366004611657565b610730565b60075460ff166101dc565b61021d6102f236600461169c565b6001600160a01b031660009081526002602052604090205490565b61027461031b3660046115f1565b61073d565b610274610752565b61033b6103363660046116b7565b6107f6565b6040516001600160a01b0390911681526020016101e8565b6101dc610361366004611670565b610815565b6101f961083e565b61021d600081565b6101dc6103843660046115f1565b61084d565b6101dc6103973660046115f1565b6108c8565b61021d6103aa366004611657565b6108d6565b61021d7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b6102746103e4366004611670565b6108ed565b61021d6103f73660046116d9565b610912565b61021d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b60006001600160e01b03198216635a05180f60e01b14806104485750610448826109d6565b92915050565b60606005805461045d90611703565b80601f016020809104026020016040519081016040528092919081815260200182805461048990611703565b80156104d65780601f106104ab576101008083540402835291602001916104d6565b820191906000526020600020905b8154815290600101906020018083116104b957829003601f168201915b5050505050905090565b6000336104ee818585610a0b565b5060019392505050565b600033610506858285610b2f565b610511858585610ba9565b506001949350505050565b60008281526020819052604090206001015461053781610d5f565b6105418383610d69565b505050565b6001600160a01b03811633146105bb5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6105c58282610d8b565b5050565b6000336104ee8185856105dc8383610912565b6105e69190611753565b610a0b565b6106157f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6106875760405162461bcd60e51b815260206004820152603960248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20756e70617573650000000000000060648201526084016105b2565b61068f610dad565b565b6106bb7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610815565b6107265760405162461bcd60e51b815260206004820152603660248201527f45524332305072657365744d696e7465725061757365723a206d7573742068616044820152751d99481b5a5b9d195c881c9bdb19481d1bc81b5a5b9d60521b60648201526084016105b2565b6105c58282610dff565b61073a3382610ecc565b50565b610748823383610b2f565b6105c58282610ecc565b61077c7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610815565b6107ee5760405162461bcd60e51b815260206004820152603760248201527f45524332305072657365744d696e7465725061757365723a206d75737420686160448201527f76652070617573657220726f6c6520746f20706175736500000000000000000060648201526084016105b2565b61068f61100c565b600082815260016020526040812061080e9083611049565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60606006805461045d90611703565b6000338161085b8286610912565b9050838110156108bb5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016105b2565b6105118286868403610a0b565b6000336104ee818585610ba9565b600081815260016020526040812061044890611055565b60008281526020819052604090206001015461090881610d5f565b6105418383610d8b565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b6109478282610815565b6105c5576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561097d3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600061080e836001600160a01b03841661105f565b60006001600160e01b03198216637965db0b60e01b148061044857506301ffc9a760e01b6001600160e01b0319831614610448565b6001600160a01b038316610a6d5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016105b2565b6001600160a01b038216610ace5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016105b2565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6000610b3b8484610912565b90506000198114610ba35781811015610b965760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105b2565b610ba38484848403610a0b565b50505050565b6001600160a01b038316610c0d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016105b2565b6001600160a01b038216610c6f5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016105b2565b610c7a8383836110ae565b6001600160a01b03831660009081526002602052604090205481811015610cf25760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016105b2565b6001600160a01b0380851660008181526002602052604080822086860390559286168082529083902080548601905591517fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90610d529086815260200190565b60405180910390a3610ba3565b61073a81336110b9565b610d73828261093d565b600082815260016020526040902061054190826109c1565b610d958282611112565b60008281526001602052604090206105419082611177565b610db561118c565b6007805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b038216610e555760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105b2565b610e61600083836110ae565b8060046000828254610e739190611753565b90915550506001600160a01b0382166000818152600260209081526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b6001600160a01b038216610f2c5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105b2565b610f38826000836110ae565b6001600160a01b03821660009081526002602052604090205481811015610fac5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016105b2565b6001600160a01b03831660008181526002602090815260408083208686039055600480548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6110146111d5565b6007805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258610de23390565b600061080e838361121b565b6000610448825490565b60008181526001830160205260408120546110a657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610448565b506000610448565b610541838383611245565b6110c38282610815565b6105c5576110d0816112ab565b6110db8360206112bd565b6040516020016110ec92919061176b565b60408051601f198184030181529082905262461bcd60e51b82526105b2916004016115a2565b61111c8282610815565b156105c5576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600061080e836001600160a01b038416611459565b60075460ff1661068f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105b2565b60075460ff161561068f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105b2565b6000826000018281548110611232576112326117e0565b9060005260206000200154905092915050565b60075460ff16156105415760405162461bcd60e51b815260206004820152602a60248201527f45524332305061757361626c653a20746f6b656e207472616e736665722077686044820152691a5b19481c185d5cd95960b21b60648201526084016105b2565b60606104486001600160a01b03831660145b606060006112cc8360026117f6565b6112d7906002611753565b67ffffffffffffffff8111156112ef576112ef611815565b6040519080825280601f01601f191660200182016040528015611319576020820181803683370190505b509050600360fc1b81600081518110611334576113346117e0565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611363576113636117e0565b60200101906001600160f81b031916908160001a90535060006113878460026117f6565b611392906001611753565b90505b600181111561140a576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106113c6576113c66117e0565b1a60f81b8282815181106113dc576113dc6117e0565b60200101906001600160f81b031916908160001a90535060049490941c936114038161182b565b9050611395565b50831561080e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105b2565b6000818152600183016020526040812054801561154257600061147d600183611842565b855490915060009061149190600190611842565b90508181146114f65760008660000182815481106114b1576114b16117e0565b90600052602060002001549050808760000184815481106114d4576114d46117e0565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061150757611507611859565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610448565b6000915050610448565b60006020828403121561155e57600080fd5b81356001600160e01b03198116811461080e57600080fd5b60005b83811015611591578181015183820152602001611579565b83811115610ba35750506000910152565b60208152600082518060208401526115c1816040850160208701611576565b601f01601f19169190910160400192915050565b80356001600160a01b03811681146115ec57600080fd5b919050565b6000806040838503121561160457600080fd5b61160d836115d5565b946020939093013593505050565b60008060006060848603121561163057600080fd5b611639846115d5565b9250611647602085016115d5565b9150604084013590509250925092565b60006020828403121561166957600080fd5b5035919050565b6000806040838503121561168357600080fd5b82359150611693602084016115d5565b90509250929050565b6000602082840312156116ae57600080fd5b61080e826115d5565b600080604083850312156116ca57600080fd5b50508035926020909101359150565b600080604083850312156116ec57600080fd5b6116f5836115d5565b9150611693602084016115d5565b600181811c9082168061171757607f821691505b60208210810361173757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156117665761176661173d565b500190565b7f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008152600083516117a3816017850160208801611576565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516117d4816028840160208801611576565b01602801949350505050565b634e487b7160e01b600052603260045260246000fd5b60008160001904831182151516156118105761181061173d565b500290565b634e487b7160e01b600052604160045260246000fd5b60008161183a5761183a61173d565b506000190190565b6000828210156118545761185461173d565b500390565b634e487b7160e01b600052603160045260246000fdfea26469706673582212203555e31cce90e73428bd55d1113c2e0b9b5a9d364695f4eed684cee3a00098e664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -283,3 +283,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -308,3 +308,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -314,3 +314,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -317,0 +317,0 @@ },

@@ -7,2 +7,18 @@ {

{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,

@@ -84,2 +100,8 @@ "inputs": [

"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -110,2 +132,15 @@ {

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",

@@ -227,2 +262,15 @@ "outputs": [

"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",

@@ -334,6 +382,49 @@ "outputs": [

{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -362,3 +453,3 @@ }

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -545,3 +636,3 @@ }

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -570,3 +661,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -576,3 +667,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -579,0 +670,0 @@ },

@@ -7,2 +7,18 @@ {

{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,

@@ -84,2 +100,8 @@ "inputs": [

"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -110,2 +132,15 @@ {

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DOMAIN_SEPARATOR",

@@ -227,2 +262,15 @@ "outputs": [

"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "decimals",

@@ -334,2 +382,45 @@ "outputs": [

{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [

@@ -357,3 +448,3 @@ {

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -382,3 +473,3 @@ }

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -589,3 +680,3 @@ }

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -614,3 +705,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -620,3 +711,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -623,0 +714,0 @@ },

@@ -251,3 +251,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -276,3 +276,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -282,3 +282,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -285,0 +285,0 @@ },

@@ -251,3 +251,3 @@ {

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -354,6 +354,6 @@ }

],
"bytecode": "0x60806040523480156200001157600080fd5b50604051620014de380380620014de8339810160408190526200003491620001c1565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b5050506200027b565b828054620000769062000228565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b600082601f8301126200011f578081fd5b81516001600160401b03808211156200013c576200013c62000265565b604051601f8301601f19908116603f0116810190828211818310171562000167576200016762000265565b8160405283815260209250868385880101111562000183578485fd5b8491505b83821015620001a6578582018301518183018401529082019062000187565b83821115620001b757848385830101525b9695505050505050565b60008060408385031215620001d4578182fd5b82516001600160401b0380821115620001eb578384fd5b620001f9868387016200010e565b935060208501519150808211156200020f578283fd5b506200021e858286016200010e565b9150509250929050565b600181811c908216806200023d57607f821691505b602082108114156200025f57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b611253806200028b6000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec576100cf565b80636352211e1461017757806370a082311461018a57806395d89b41146101ab576100cf565b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610f4b565b610228565b60405190151581526020015b60405180910390f35b61010461027c565b6040516100f39190611033565b61012461011f366004610f83565b61030e565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610f22565b6103a8565b005b61014f61015f366004610dd8565b6104be565b61014f610172366004610dd8565b6104ef565b610124610185366004610f83565b61050a565b61019d610198366004610d8c565b610581565b6040519081526020016100f3565b610104610608565b61014f6101c1366004610ee8565b610617565b61014f6101d4366004610e13565b610626565b6101046101e7366004610f83565b61065e565b6100e76101fa366004610da6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606000805461028b90611158565b80601f01602080910402602001604051908101604052809291908181526020018280546102b790611158565b80156103045780601f106102d957610100808354040283529160200191610304565b820191906000526020600020905b8154815290600101906020018083116102e757829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b38261050a565b9050806001600160a01b0316836001600160a01b031614156104215760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610383565b336001600160a01b038216148061043d575061043d81336101fa565b6104af5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610383565b6104b98383610746565b505050565b6104c833826107b4565b6104e45760405162461bcd60e51b815260040161038390611098565b6104b98383836108ab565b6104b983838360405180602001604052806000815250610626565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610383565b60006001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610383565b506001600160a01b031660009081526003602052604090205490565b60606001805461028b90611158565b610622338383610a4b565b5050565b61063033836107b4565b61064c5760405162461bcd60e51b815260040161038390611098565b61065884848484610b1a565b50505050565b6000818152600260205260409020546060906001600160a01b03166106dd5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610383565b60006106f460408051602081019091526000815290565b90506000815111610714576040518060200160405280600081525061073f565b8061071e84610b4d565b60405160200161072f929190610fc7565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077b8261050a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610383565b60006108388361050a565b9050806001600160a01b0316846001600160a01b031614806108735750836001600160a01b03166108688461030e565b6001600160a01b0316145b806108a357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108be8261050a565b6001600160a01b0316146109265760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610383565b6001600160a01b0382166109885760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610383565b610993600082610746565b6001600160a01b03831660009081526003602052604081208054600192906109bc908490611115565b90915550506001600160a01b03821660009081526003602052604081208054600192906109ea9084906110e9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610383565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b258484846108ab565b610b3184848484610c68565b6106585760405162461bcd60e51b815260040161038390611046565b606081610b7257506040805180820190915260018152600360fc1b6020820152610277565b8160005b8115610b9c5780610b8681611193565b9150610b959050600a83611101565b9150610b76565b60008167ffffffffffffffff811115610bc557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610bef576020820181803683370190505b5090505b84156108a357610c04600183611115565b9150610c11600a866111ae565b610c1c9060306110e9565b60f81b818381518110610c3f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350610c61600a86611101565b9450610bf3565b60006001600160a01b0384163b15610d6a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610cac903390899088908890600401610ff6565b602060405180830381600087803b158015610cc657600080fd5b505af1925050508015610cf6575060408051601f3d908101601f19168201909252610cf391810190610f67565b60015b610d50573d808015610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b508051610d485760405162461bcd60e51b815260040161038390611046565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a3565b506001949350505050565b80356001600160a01b038116811461027757600080fd5b600060208284031215610d9d578081fd5b61073f82610d75565b60008060408385031215610db8578081fd5b610dc183610d75565b9150610dcf60208401610d75565b90509250929050565b600080600060608486031215610dec578081fd5b610df584610d75565b9250610e0360208501610d75565b9150604084013590509250925092565b60008060008060808587031215610e28578081fd5b610e3185610d75565b9350610e3f60208601610d75565b925060408501359150606085013567ffffffffffffffff80821115610e62578283fd5b818701915087601f830112610e75578283fd5b813581811115610e8757610e876111ee565b604051601f8201601f19908116603f01168101908382118183101715610eaf57610eaf6111ee565b816040528281528a6020848701011115610ec7578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215610efa578182fd5b610f0383610d75565b915060208301358015158114610f17578182fd5b809150509250929050565b60008060408385031215610f34578182fd5b610f3d83610d75565b946020939093013593505050565b600060208284031215610f5c578081fd5b813561073f81611204565b600060208284031215610f78578081fd5b815161073f81611204565b600060208284031215610f94578081fd5b5035919050565b60008151808452610fb381602086016020860161112c565b601f01601f19169290920160200192915050565b60008351610fd981846020880161112c565b835190830190610fed81836020880161112c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061102990830184610f9b565b9695505050505050565b60006020825261073f6020830184610f9b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156110fc576110fc6111c2565b500190565b600082611110576111106111d8565b500490565b600082821015611127576111276111c2565b500390565b60005b8381101561114757818101518382015260200161112f565b838111156106585750506000910152565b600181811c9082168061116c57607f821691505b6020821081141561118d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156111a7576111a76111c2565b5060010190565b6000826111bd576111bd6111d8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461121a57600080fd5b5056fea2646970667358221220aef447fec4ec6d142a1a9a986fe2726fdfb2a363a07d50b823f5c1912e79397264736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec576100cf565b80636352211e1461017757806370a082311461018a57806395d89b41146101ab576100cf565b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610f4b565b610228565b60405190151581526020015b60405180910390f35b61010461027c565b6040516100f39190611033565b61012461011f366004610f83565b61030e565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610f22565b6103a8565b005b61014f61015f366004610dd8565b6104be565b61014f610172366004610dd8565b6104ef565b610124610185366004610f83565b61050a565b61019d610198366004610d8c565b610581565b6040519081526020016100f3565b610104610608565b61014f6101c1366004610ee8565b610617565b61014f6101d4366004610e13565b610626565b6101046101e7366004610f83565b61065e565b6100e76101fa366004610da6565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b60606000805461028b90611158565b80601f01602080910402602001604051908101604052809291908181526020018280546102b790611158565b80156103045780601f106102d957610100808354040283529160200191610304565b820191906000526020600020905b8154815290600101906020018083116102e757829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b031661038c5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b60006103b38261050a565b9050806001600160a01b0316836001600160a01b031614156104215760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610383565b336001600160a01b038216148061043d575061043d81336101fa565b6104af5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c00000000000000006064820152608401610383565b6104b98383610746565b505050565b6104c833826107b4565b6104e45760405162461bcd60e51b815260040161038390611098565b6104b98383836108ab565b6104b983838360405180602001604052806000815250610626565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b6064820152608401610383565b60006001600160a01b0382166105ec5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610383565b506001600160a01b031660009081526003602052604090205490565b60606001805461028b90611158565b610622338383610a4b565b5050565b61063033836107b4565b61064c5760405162461bcd60e51b815260040161038390611098565b61065884848484610b1a565b50505050565b6000818152600260205260409020546060906001600160a01b03166106dd5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608401610383565b60006106f460408051602081019091526000815290565b90506000815111610714576040518060200160405280600081525061073f565b8061071e84610b4d565b60405160200161072f929190610fc7565b6040516020818303038152906040525b9392505050565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061077b8261050a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600260205260408120546001600160a01b031661082d5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610383565b60006108388361050a565b9050806001600160a01b0316846001600160a01b031614806108735750836001600160a01b03166108688461030e565b6001600160a01b0316145b806108a357506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b03166108be8261050a565b6001600160a01b0316146109265760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b6064820152608401610383565b6001600160a01b0382166109885760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610383565b610993600082610746565b6001600160a01b03831660009081526003602052604081208054600192906109bc908490611115565b90915550506001600160a01b03821660009081526003602052604081208054600192906109ea9084906110e9565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03161415610aad5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610383565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610b258484846108ab565b610b3184848484610c68565b6106585760405162461bcd60e51b815260040161038390611046565b606081610b7257506040805180820190915260018152600360fc1b6020820152610277565b8160005b8115610b9c5780610b8681611193565b9150610b959050600a83611101565b9150610b76565b60008167ffffffffffffffff811115610bc557634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015610bef576020820181803683370190505b5090505b84156108a357610c04600183611115565b9150610c11600a866111ae565b610c1c9060306110e9565b60f81b818381518110610c3f57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350610c61600a86611101565b9450610bf3565b60006001600160a01b0384163b15610d6a57604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610cac903390899088908890600401610ff6565b602060405180830381600087803b158015610cc657600080fd5b505af1925050508015610cf6575060408051601f3d908101601f19168201909252610cf391810190610f67565b60015b610d50573d808015610d24576040519150601f19603f3d011682016040523d82523d6000602084013e610d29565b606091505b508051610d485760405162461bcd60e51b815260040161038390611046565b805181602001fd5b6001600160e01b031916630a85bd0160e11b1490506108a3565b506001949350505050565b80356001600160a01b038116811461027757600080fd5b600060208284031215610d9d578081fd5b61073f82610d75565b60008060408385031215610db8578081fd5b610dc183610d75565b9150610dcf60208401610d75565b90509250929050565b600080600060608486031215610dec578081fd5b610df584610d75565b9250610e0360208501610d75565b9150604084013590509250925092565b60008060008060808587031215610e28578081fd5b610e3185610d75565b9350610e3f60208601610d75565b925060408501359150606085013567ffffffffffffffff80821115610e62578283fd5b818701915087601f830112610e75578283fd5b813581811115610e8757610e876111ee565b604051601f8201601f19908116603f01168101908382118183101715610eaf57610eaf6111ee565b816040528281528a6020848701011115610ec7578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215610efa578182fd5b610f0383610d75565b915060208301358015158114610f17578182fd5b809150509250929050565b60008060408385031215610f34578182fd5b610f3d83610d75565b946020939093013593505050565b600060208284031215610f5c578081fd5b813561073f81611204565b600060208284031215610f78578081fd5b815161073f81611204565b600060208284031215610f94578081fd5b5035919050565b60008151808452610fb381602086016020860161112c565b601f01601f19169290920160200192915050565b60008351610fd981846020880161112c565b835190830190610fed81836020880161112c565b01949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061102990830184610f9b565b9695505050505050565b60006020825261073f6020830184610f9b565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156110fc576110fc6111c2565b500190565b600082611110576111106111d8565b500490565b600082821015611127576111276111c2565b500390565b60005b8381101561114757818101518382015260200161112f565b838111156106585750506000910152565b600181811c9082168061116c57607f821691505b6020821081141561118d57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156111a7576111a76111c2565b5060010190565b6000826111bd576111bd6111d8565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461121a57600080fd5b5056fea2646970667358221220aef447fec4ec6d142a1a9a986fe2726fdfb2a363a07d50b823f5c1912e79397264736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200138c3803806200138c8339810160408190526200003491620001db565b81516200004990600090602085019062000068565b5080516200005f90600190602084019062000068565b50505062000281565b828054620000769062000245565b90600052602060002090601f0160209004810192826200009a5760008555620000e5565b82601f10620000b557805160ff1916838001178555620000e5565b82800160010185558215620000e5579182015b82811115620000e5578251825591602001919060010190620000c8565b50620000f3929150620000f7565b5090565b5b80821115620000f35760008155600101620000f8565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200013657600080fd5b81516001600160401b03808211156200015357620001536200010e565b604051601f8301601f19908116603f011681019082821181831017156200017e576200017e6200010e565b816040528381526020925086838588010111156200019b57600080fd5b600091505b83821015620001bf5785820183015181830184015290820190620001a0565b83821115620001d15760008385830101525b9695505050505050565b60008060408385031215620001ef57600080fd5b82516001600160401b03808211156200020757600080fd5b620002158683870162000124565b935060208501519150808211156200022c57600080fd5b506200023b8582860162000124565b9150509250929050565b600181811c908216806200025a57607f821691505b6020821081036200027b57634e487b7160e01b600052602260045260246000fd5b50919050565b6110fb80620002916000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cf4565b61012461011f366004610d07565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d3c565b610333565b005b61014f61015f366004610d66565b61044d565b61014f610172366004610d66565b61047e565b610124610185366004610d07565b610499565b61019d610198366004610da2565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610dbd565b61058e565b61014f6101d4366004610e0f565b61059d565b6101046101e7366004610d07565b6105d5565b6100e76101fa366004610eeb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f1e565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f58565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f1e565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f58565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610fa5565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fd4565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fd4565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611019565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df9565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad490339089908890889060040161106b565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a8565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611019565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b838111156105cf5750506000910152565b60008151808452610ce0816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc8565b600060208284031215610d1957600080fd5b5035919050565b80356001600160a01b0381168114610d3757600080fd5b919050565b60008060408385031215610d4f57600080fd5b610d5883610d20565b946020939093013593505050565b600080600060608486031215610d7b57600080fd5b610d8484610d20565b9250610d9260208501610d20565b9150604084013590509250925092565b600060208284031215610db457600080fd5b61064282610d20565b60008060408385031215610dd057600080fd5b610dd983610d20565b915060208301358015158114610dee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e2557600080fd5b610e2e85610d20565b9350610e3c60208601610d20565b925060408501359150606085013567ffffffffffffffff80821115610e6057600080fd5b818701915087601f830112610e7457600080fd5b813581811115610e8657610e86610df9565b604051601f8201601f19908116603f01168101908382118183101715610eae57610eae610df9565b816040528281528a6020848701011115610ec757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610efe57600080fd5b610f0783610d20565b9150610f1560208401610d20565b90509250929050565b600181811c90821680610f3257607f821691505b602082108103610f5257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610fb7818460208801610c9c565b835190830190610fcb818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109e90830184610cc8565b9695505050505050565b6000602082840312156110ba57600080fd5b815161064281610c6956fea2646970667358221220656215cd1c770b1c0ef26b32de6dec1d6fd90e95d8c1190aff80f7b572dca52664736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80636352211e1161008c578063a22cb46511610066578063a22cb465146101b3578063b88d4fde146101c6578063c87b56dd146101d9578063e985e9c5146101ec57600080fd5b80636352211e1461017757806370a082311461018a57806395d89b41146101ab57600080fd5b806301ffc9a7146100d457806306fdde03146100fc578063081812fc14610111578063095ea7b31461013c57806323b872dd1461015157806342842e0e14610164575b600080fd5b6100e76100e2366004610c7f565b610228565b60405190151581526020015b60405180910390f35b61010461027a565b6040516100f39190610cf4565b61012461011f366004610d07565b61030c565b6040516001600160a01b0390911681526020016100f3565b61014f61014a366004610d3c565b610333565b005b61014f61015f366004610d66565b61044d565b61014f610172366004610d66565b61047e565b610124610185366004610d07565b610499565b61019d610198366004610da2565b6104f9565b6040519081526020016100f3565b61010461057f565b61014f6101c1366004610dbd565b61058e565b61014f6101d4366004610e0f565b61059d565b6101046101e7366004610d07565b6105d5565b6100e76101fa366004610eeb565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b148061025957506001600160e01b03198216635b5e139f60e01b145b8061027457506301ffc9a760e01b6001600160e01b03198316145b92915050565b60606000805461028990610f1e565b80601f01602080910402602001604051908101604052809291908181526020018280546102b590610f1e565b80156103025780601f106102d757610100808354040283529160200191610302565b820191906000526020600020905b8154815290600101906020018083116102e557829003601f168201915b5050505050905090565b600061031782610649565b506000908152600460205260409020546001600160a01b031690565b600061033e82610499565b9050806001600160a01b0316836001600160a01b0316036103b05760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806103cc57506103cc81336101fa565b61043e5760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016103a7565b61044883836106ab565b505050565b6104573382610719565b6104735760405162461bcd60e51b81526004016103a790610f58565b610448838383610798565b6104488383836040518060200160405280600081525061059d565b6000818152600260205260408120546001600160a01b0316806102745760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b60006001600160a01b0382166105635760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016103a7565b506001600160a01b031660009081526003602052604090205490565b60606001805461028990610f1e565b6105993383836108fc565b5050565b6105a73383610719565b6105c35760405162461bcd60e51b81526004016103a790610f58565b6105cf848484846109ca565b50505050565b60606105e082610649565b60006105f760408051602081019091526000815290565b905060008151116106175760405180602001604052806000815250610642565b80610621846109fd565b604051602001610632929190610fa5565b6040516020818303038152906040525b9392505050565b6000818152600260205260409020546001600160a01b03166106a85760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016103a7565b50565b600081815260046020526040902080546001600160a01b0319166001600160a01b03841690811790915581906106e082610499565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b60008061072583610499565b9050806001600160a01b0316846001600160a01b0316148061076c57506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b806107905750836001600160a01b03166107858461030c565b6001600160a01b0316145b949350505050565b826001600160a01b03166107ab82610499565b6001600160a01b0316146107d15760405162461bcd60e51b81526004016103a790610fd4565b6001600160a01b0382166108335760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016103a7565b826001600160a01b031661084682610499565b6001600160a01b03161461086c5760405162461bcd60e51b81526004016103a790610fd4565b600081815260046020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260038552838620805460001901905590871680865283862080546001019055868652600290945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b816001600160a01b0316836001600160a01b03160361095d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016103a7565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6109d5848484610798565b6109e184848484610a90565b6105cf5760405162461bcd60e51b81526004016103a790611019565b60606000610a0a83610b91565b600101905060008167ffffffffffffffff811115610a2a57610a2a610df9565b6040519080825280601f01601f191660200182016040528015610a54576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a8504945084610a5e57509392505050565b60006001600160a01b0384163b15610b8657604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290610ad490339089908890889060040161106b565b6020604051808303816000875af1925050508015610b0f575060408051601f3d908101601f19168201909252610b0c918101906110a8565b60015b610b6c573d808015610b3d576040519150601f19603f3d011682016040523d82523d6000602084013e610b42565b606091505b508051600003610b645760405162461bcd60e51b81526004016103a790611019565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610790565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b8310610bd05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef81000000008310610bfc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc100008310610c1a57662386f26fc10000830492506010015b6305f5e1008310610c32576305f5e100830492506008015b6127108310610c4657612710830492506004015b60648310610c58576064830492506002015b600a83106102745760010192915050565b6001600160e01b0319811681146106a857600080fd5b600060208284031215610c9157600080fd5b813561064281610c69565b60005b83811015610cb7578181015183820152602001610c9f565b838111156105cf5750506000910152565b60008151808452610ce0816020860160208601610c9c565b601f01601f19169290920160200192915050565b6020815260006106426020830184610cc8565b600060208284031215610d1957600080fd5b5035919050565b80356001600160a01b0381168114610d3757600080fd5b919050565b60008060408385031215610d4f57600080fd5b610d5883610d20565b946020939093013593505050565b600080600060608486031215610d7b57600080fd5b610d8484610d20565b9250610d9260208501610d20565b9150604084013590509250925092565b600060208284031215610db457600080fd5b61064282610d20565b60008060408385031215610dd057600080fd5b610dd983610d20565b915060208301358015158114610dee57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060008060808587031215610e2557600080fd5b610e2e85610d20565b9350610e3c60208601610d20565b925060408501359150606085013567ffffffffffffffff80821115610e6057600080fd5b818701915087601f830112610e7457600080fd5b813581811115610e8657610e86610df9565b604051601f8201601f19908116603f01168101908382118183101715610eae57610eae610df9565b816040528281528a6020848701011115610ec757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b60008060408385031215610efe57600080fd5b610f0783610d20565b9150610f1560208401610d20565b90509250929050565b600181811c90821680610f3257607f821691505b602082108103610f5257634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b60008351610fb7818460208801610c9c565b835190830190610fcb818360208801610c9c565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061109e90830184610cc8565b9695505050505050565b6000602082840312156110ba57600080fd5b815161064281610c6956fea2646970667358221220656215cd1c770b1c0ef26b32de6dec1d6fd90e95d8c1190aff80f7b572dca52664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -248,3 +248,3 @@ {

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -251,0 +251,0 @@ }

@@ -235,3 +235,3 @@ {

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -238,0 +238,0 @@ }

@@ -41,6 +41,6 @@ {

],
"bytecode": "0x608060405234801561001057600080fd5b506101a8806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e366004610087565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b6000806000806080858703121561009c578384fd5b6100a58561006b565b93506100b36020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100d6578283fd5b818701915087601f8301126100e9578283fd5b8135818111156100fb576100fb61015c565b604051601f8201601f19908116603f011681019083821181831017156101235761012361015c565b816040528281528a602084870101111561013b578586fd5b82602086016020830137918201602001949094529598949750929550505050565b634e487b7160e01b600052604160045260246000fdfea26469706673582212204f3168e78a644f56388da79f9a12380b76f9466173efd445215dc7182d81e59664736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e366004610087565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b6000806000806080858703121561009c578384fd5b6100a58561006b565b93506100b36020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100d6578283fd5b818701915087601f8301126100e9578283fd5b8135818111156100fb576100fb61015c565b604051601f8201601f19908116603f011681019083821181831017156101235761012361015c565b816040528281528a602084870101111561013b578586fd5b82602086016020830137918201602001949094529598949750929550505050565b634e487b7160e01b600052604160045260246000fdfea26469706673582212204f3168e78a644f56388da79f9a12380b76f9466173efd445215dc7182d81e59664736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b506101af806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea2646970667358221220937e7e7aca3ed2e03266b2dc995300bf04e0f158dc015502d750404e0329305d64736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063150b7a0214610030575b600080fd5b61004e61003e36600461009d565b630a85bd0160e11b949350505050565b6040516001600160e01b0319909116815260200160405180910390f35b80356001600160a01b038116811461008257600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b600080600080608085870312156100b357600080fd5b6100bc8561006b565b93506100ca6020860161006b565b925060408501359150606085013567ffffffffffffffff808211156100ee57600080fd5b818701915087601f83011261010257600080fd5b81358181111561011457610114610087565b604051601f8201601f19908116603f0116810190838211818310171561013c5761013c610087565b816040528281528a602084870101111561015557600080fd5b8260208601602083013760006020848301015280955050505050509295919450925056fea2646970667358221220937e7e7aca3ed2e03266b2dc995300bf04e0f158dc015502d750404e0329305d64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -274,3 +274,3 @@ {

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -277,0 +277,0 @@ }

@@ -582,3 +582,3 @@ {

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -748,6 +748,6 @@ }

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002b0838038062002b088339810160408190526200003491620003b3565b8251839083906200004d9060029060208501906200025a565b508051620000639060039060208401906200025a565b5050600c805460ff191690555080516200008590600e9060208401906200025a565b50620000946000335b620000f5565b620000c07f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a6336200008e565b620000ec7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a336200008e565b50505062000493565b62000101828262000105565b5050565b6200011c82826200014860201b62000e461760201c565b60008281526001602090815260409091206200014391839062000eca620001e8821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000101576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001ff836001600160a01b03841662000208565b90505b92915050565b6000818152600183016020526040812054620002515750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000202565b50600062000202565b828054620002689062000440565b90600052602060002090601f0160209004810192826200028c5760008555620002d7565b82601f10620002a757805160ff1916838001178555620002d7565b82800160010185558215620002d7579182015b82811115620002d7578251825591602001919060010190620002ba565b50620002e5929150620002e9565b5090565b5b80821115620002e55760008155600101620002ea565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e6200047d565b604051601f8301601f19908116603f011681019082821181831017156200035957620003596200047d565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b600080600060608486031215620003c8578283fd5b83516001600160401b0380821115620003df578485fd5b620003ed8783880162000300565b9450602086015191508082111562000403578384fd5b620004118783880162000300565b9350604086015191508082111562000427578283fd5b50620004368682870162000300565b9150509250925092565b600181811c908216806200045557607f821691505b602082108114156200047757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b61266580620004a36000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c514610458576101e5565b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e4576101e5565b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a3576101e5565b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d576101e5565b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb14610329576101e5565b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e8576101e5565b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c576101e5565b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f83660046122cd565b610494565b60405190151581526020015b60405180910390f35b61021a6104a7565b6040516102099190612412565b61023a610235366004612272565b610539565b6040516001600160a01b039091168152602001610209565b610265610260366004612249565b6105d3565b005b600a545b604051908152602001610209565b6102656102873660046120ff565b6106e9565b61026b61029a366004612272565b60009081526020819052604090206001015490565b6102656102bd36600461228a565b61071b565b61026b6102d0366004612249565b610742565b6102656102e336600461228a565b6107db565b610265610859565b6102656102fe3660046120ff565b610901565b610265610311366004612272565b61091c565b61026b610324366004612272565b610996565b600c5460ff166101fd565b61023a610342366004612272565b610a37565b6102656103553660046120b3565b610aae565b61026b6103683660046120b3565b610b6a565b610265610bf1565b61023a6103833660046122ac565b610c95565b6101fd61039636600461228a565b610cb4565b61021a610cdd565b61026b600081565b6102656103b936600461220f565b610cec565b6102656103cc36600461213a565b610cf7565b61021a6103df366004612272565b610d2f565b61026b6103f2366004612272565b610e09565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c36600461228a565b610e20565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd6104663660046120cd565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610edf565b90505b919050565b6060600280546104b69061256d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e29061256d565b801561052f5780601f106105045761010080835404028352916020019161052f565b820191906000526020600020905b81548152906001019060200180831161051257829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166105b75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105de82610a37565b9050806001600160a01b0316836001600160a01b0316141561064c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105ae565b336001600160a01b038216148061066857506106688133610466565b6106da5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105ae565b6106e48383610f04565b505050565b6106f4335b82610f72565b6107105760405162461bcd60e51b81526004016105ae90612477565b6106e4838383611069565b60008281526020819052604090206001015461073881335b611214565b6106e48383611278565b600061074d83610b6a565b82106107af5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105ae565b506001600160a01b03821660009081526008602090815260408083208484529091529020545b92915050565b6001600160a01b038116331461084b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ae565b610855828261129a565b5050565b6108837f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b6108f7576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105ae565b6108ff6112bc565b565b6106e483838360405180602001604052806000815250610cf7565b610925336106ee565b61098a5760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105ae565b6109938161134f565b50565b60006109a1600a5490565b8210610a045760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105ae565b600a8281548110610a2557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105ae565b610ad87f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610396565b610b4a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105ae565b610b5c81610b57600d5490565b6113f6565b610993600d80546001019055565b60006001600160a01b038216610bd55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105ae565b506001600160a01b031660009081526005602052604090205490565b610c1b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b610c8d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105ae565b6108ff611544565b6000828152600160205260408120610cad90836115bf565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b69061256d565b6108553383836115cb565b610d013383610f72565b610d1d5760405162461bcd60e51b81526004016105ae90612477565b610d298484848461169a565b50505050565b6000818152600460205260409020546060906001600160a01b0316610dae5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105ae565b6000610db86116cd565b90506000815111610dd85760405180602001604052806000815250610cad565b80610de2846116dc565b604051602001610df3929190612331565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f906117f7565b600082815260208190526040902060010154610e3c8133610733565b6106e4838361129a565b610e508282610cb4565b610855576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e863390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610cad836001600160a01b038416611801565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f82611850565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f3982610a37565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b0316610feb5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105ae565b6000610ff683610a37565b9050806001600160a01b0316846001600160a01b031614806110315750836001600160a01b031661102684610539565b6001600160a01b0316145b8061106157506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661107c82610a37565b6001600160a01b0316146110e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016105ae565b6001600160a01b0382166111465760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ae565b611151838383611890565b61115c600082610f04565b6001600160a01b0383166000908152600560205260408120805460019290611185908490612513565b90915550506001600160a01b03821660009081526005602052604081208054600192906111b39084906124c8565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61121e8282610cb4565b61085557611236816001600160a01b0316601461189b565b61124183602061189b565b604051602001611252929190612360565b60408051601f198184030181529082905262461bcd60e51b82526105ae91600401612412565b6112828282610e46565b60008281526001602052604090206106e49082610eca565b6112a48282611a7d565b60008281526001602052604090206106e49082611ae2565b600c5460ff166113055760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ae565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600061135a82610a37565b905061136881600084611890565b611373600083610f04565b6001600160a01b038116600090815260056020526040812080546001929061139c908490612513565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661144c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105ae565b6000818152600460205260409020546001600160a01b0316156114b15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105ae565b6114bd60008383611890565b6001600160a01b03821660009081526005602052604081208054600192906114e69084906124c8565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600c5460ff161561158a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ae565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113323390565b6000610cad8383611af7565b816001600160a01b0316836001600160a01b0316141561162d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105ae565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116a5848484611069565b6116b184848484611b2f565b610d295760405162461bcd60e51b81526004016105ae90612425565b6060600e80546104b69061256d565b60608161170157506040805180820190915260018152600360fc1b60208201526104a2565b8160005b811561172b5780611715816125a8565b91506117249050600a836124e0565b9150611705565b60008167ffffffffffffffff81111561175457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561177e576020820181803683370190505b5090505b841561106157611793600183612513565b91506117a0600a866125c3565b6117ab9060306124c8565b60f81b8183815181106117ce57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506117f0600a866124e0565b9450611782565b600061049f825490565b6000818152600183016020526040812054611848575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d5565b5060006107d5565b60006001600160e01b031982166380ac58cd60e01b148061188157506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611c3c565b6106e4838383611c61565b606060006118aa8360026124f4565b6118b59060026124c8565b67ffffffffffffffff8111156118db57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611905576020820181803683370190505b509050600360fc1b8160008151811061192e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061196b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061198f8460026124f4565b61199a9060016124c8565b90505b6001811115611a2e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119dc57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110611a0057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611a2781612556565b905061199d565b508315610cad5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ae565b611a878282610cb4565b15610855576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610cad836001600160a01b038416611cd3565b6000826000018281548110611b1c57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160a01b0384163b15611c3157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611b739033908990889088906004016123d5565b602060405180830381600087803b158015611b8d57600080fd5b505af1925050508015611bbd575060408051601f3d908101601f19168201909252611bba918101906122e9565b60015b611c17573d808015611beb576040519150601f19603f3d011682016040523d82523d6000602084013e611bf0565b606091505b508051611c0f5760405162461bcd60e51b81526004016105ae90612425565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611061565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611df0565b611c6c838383611e25565b600c5460ff16156106e45760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105ae565b60008181526001830160205260408120548015611de6576000611cf7600183612513565b8554909150600090611d0b90600190612513565b9050818114611d8c576000866000018281548110611d3957634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611d6a57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611dab57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d5565b60009150506107d5565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611e8057611e7b81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611ea3565b816001600160a01b0316836001600160a01b031614611ea357611ea38382611ee2565b6001600160a01b038216611ebf57611eba81611f7f565b6106e4565b826001600160a01b0316826001600160a01b0316146106e4576106e48282612058565b60006001611eef84610b6a565b611ef99190612513565b600083815260096020526040902054909150808214611f4c576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611f9190600190612513565b6000838152600b6020526040812054600a8054939450909284908110611fc757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600a8381548110611ff657634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a80548061203c57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061206383610b6a565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b80356001600160a01b03811681146104a257600080fd5b6000602082840312156120c4578081fd5b610cad8261209c565b600080604083850312156120df578081fd5b6120e88361209c565b91506120f66020840161209c565b90509250929050565b600080600060608486031215612113578081fd5b61211c8461209c565b925061212a6020850161209c565b9150604084013590509250925092565b6000806000806080858703121561214f578081fd5b6121588561209c565b93506121666020860161209c565b925060408501359150606085013567ffffffffffffffff80821115612189578283fd5b818701915087601f83011261219c578283fd5b8135818111156121ae576121ae612603565b604051601f8201601f19908116603f011681019083821181831017156121d6576121d6612603565b816040528281528a60208487010111156121ee578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215612221578182fd5b61222a8361209c565b91506020830135801515811461223e578182fd5b809150509250929050565b6000806040838503121561225b578182fd5b6122648361209c565b946020939093013593505050565b600060208284031215612283578081fd5b5035919050565b6000806040838503121561229c578182fd5b823591506120f66020840161209c565b600080604083850312156122be578182fd5b50508035926020909101359150565b6000602082840312156122de578081fd5b8135610cad81612619565b6000602082840312156122fa578081fd5b8151610cad81612619565b6000815180845261231d81602086016020860161252a565b601f01601f19169290920160200192915050565b6000835161234381846020880161252a565b83519083019061235781836020880161252a565b01949350505050565b60007f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008252835161239881601785016020880161252a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123c981602884016020880161252a565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061240890830184612305565b9695505050505050565b600060208252610cad6020830184612305565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156124db576124db6125d7565b500190565b6000826124ef576124ef6125ed565b500490565b600081600019048311821515161561250e5761250e6125d7565b500290565b600082821015612525576125256125d7565b500390565b60005b8381101561254557818101518382015260200161252d565b83811115610d295750506000910152565b600081612565576125656125d7565b506000190190565b600181811c9082168061258157607f821691505b602082108114156125a257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125bc576125bc6125d7565b5060010190565b6000826125d2576125d26125ed565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461099357600080fdfea2646970667358221220be0b7552d217eac6974aceb18f07c9ab982f1408445f8a7a3d26c33a59923e7864736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c514610458576101e5565b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e4576101e5565b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a3576101e5565b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d576101e5565b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb14610329576101e5565b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e8576101e5565b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c576101e5565b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f83660046122cd565b610494565b60405190151581526020015b60405180910390f35b61021a6104a7565b6040516102099190612412565b61023a610235366004612272565b610539565b6040516001600160a01b039091168152602001610209565b610265610260366004612249565b6105d3565b005b600a545b604051908152602001610209565b6102656102873660046120ff565b6106e9565b61026b61029a366004612272565b60009081526020819052604090206001015490565b6102656102bd36600461228a565b61071b565b61026b6102d0366004612249565b610742565b6102656102e336600461228a565b6107db565b610265610859565b6102656102fe3660046120ff565b610901565b610265610311366004612272565b61091c565b61026b610324366004612272565b610996565b600c5460ff166101fd565b61023a610342366004612272565b610a37565b6102656103553660046120b3565b610aae565b61026b6103683660046120b3565b610b6a565b610265610bf1565b61023a6103833660046122ac565b610c95565b6101fd61039636600461228a565b610cb4565b61021a610cdd565b61026b600081565b6102656103b936600461220f565b610cec565b6102656103cc36600461213a565b610cf7565b61021a6103df366004612272565b610d2f565b61026b6103f2366004612272565b610e09565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c36600461228a565b610e20565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd6104663660046120cd565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610edf565b90505b919050565b6060600280546104b69061256d565b80601f01602080910402602001604051908101604052809291908181526020018280546104e29061256d565b801561052f5780601f106105045761010080835404028352916020019161052f565b820191906000526020600020905b81548152906001019060200180831161051257829003601f168201915b5050505050905090565b6000818152600460205260408120546001600160a01b03166105b75760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600660205260409020546001600160a01b031690565b60006105de82610a37565b9050806001600160a01b0316836001600160a01b0316141561064c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084016105ae565b336001600160a01b038216148061066857506106688133610466565b6106da5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c000000000000000060648201526084016105ae565b6106e48383610f04565b505050565b6106f4335b82610f72565b6107105760405162461bcd60e51b81526004016105ae90612477565b6106e4838383611069565b60008281526020819052604090206001015461073881335b611214565b6106e48383611278565b600061074d83610b6a565b82106107af5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105ae565b506001600160a01b03821660009081526008602090815260408083208484529091529020545b92915050565b6001600160a01b038116331461084b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105ae565b610855828261129a565b5050565b6108837f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b6108f7576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105ae565b6108ff6112bc565b565b6106e483838360405180602001604052806000815250610cf7565b610925336106ee565b61098a5760405162461bcd60e51b815260206004820152603060248201527f4552433732314275726e61626c653a2063616c6c6572206973206e6f74206f7760448201526f1b995c881b9bdc88185c1c1c9bdd995960821b60648201526084016105ae565b6109938161134f565b50565b60006109a1600a5490565b8210610a045760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105ae565b600a8281548110610a2557634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b60648201526084016105ae565b610ad87f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610396565b610b4a5760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105ae565b610b5c81610b57600d5490565b6113f6565b610993600d80546001019055565b60006001600160a01b038216610bd55760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b60648201526084016105ae565b506001600160a01b031660009081526005602052604090205490565b610c1b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610396565b610c8d5760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105ae565b6108ff611544565b6000828152600160205260408120610cad90836115bf565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b69061256d565b6108553383836115cb565b610d013383610f72565b610d1d5760405162461bcd60e51b81526004016105ae90612477565b610d298484848461169a565b50505050565b6000818152600460205260409020546060906001600160a01b0316610dae5760405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b60648201526084016105ae565b6000610db86116cd565b90506000815111610dd85760405180602001604052806000815250610cad565b80610de2846116dc565b604051602001610df3929190612331565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f906117f7565b600082815260208190526040902060010154610e3c8133610733565b6106e4838361129a565b610e508282610cb4565b610855576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610e863390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610cad836001600160a01b038416611801565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f82611850565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610f3982610a37565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b6000818152600460205260408120546001600160a01b0316610feb5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084016105ae565b6000610ff683610a37565b9050806001600160a01b0316846001600160a01b031614806110315750836001600160a01b031661102684610539565b6001600160a01b0316145b8061106157506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b031661107c82610a37565b6001600160a01b0316146110e45760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b60648201526084016105ae565b6001600160a01b0382166111465760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105ae565b611151838383611890565b61115c600082610f04565b6001600160a01b0383166000908152600560205260408120805460019290611185908490612513565b90915550506001600160a01b03821660009081526005602052604081208054600192906111b39084906124c8565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b61121e8282610cb4565b61085557611236816001600160a01b0316601461189b565b61124183602061189b565b604051602001611252929190612360565b60408051601f198184030181529082905262461bcd60e51b82526105ae91600401612412565b6112828282610e46565b60008281526001602052604090206106e49082610eca565b6112a48282611a7d565b60008281526001602052604090206106e49082611ae2565b600c5460ff166113055760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105ae565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600061135a82610a37565b905061136881600084611890565b611373600083610f04565b6001600160a01b038116600090815260056020526040812080546001929061139c908490612513565b909155505060008281526004602052604080822080546001600160a01b0319169055518391906001600160a01b038416907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b03821661144c5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105ae565b6000818152600460205260409020546001600160a01b0316156114b15760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105ae565b6114bd60008383611890565b6001600160a01b03821660009081526005602052604081208054600192906114e69084906124c8565b909155505060008181526004602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b600c5460ff161561158a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105ae565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586113323390565b6000610cad8383611af7565b816001600160a01b0316836001600160a01b0316141561162d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105ae565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6116a5848484611069565b6116b184848484611b2f565b610d295760405162461bcd60e51b81526004016105ae90612425565b6060600e80546104b69061256d565b60608161170157506040805180820190915260018152600360fc1b60208201526104a2565b8160005b811561172b5780611715816125a8565b91506117249050600a836124e0565b9150611705565b60008167ffffffffffffffff81111561175457634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f19166020018201604052801561177e576020820181803683370190505b5090505b841561106157611793600183612513565b91506117a0600a866125c3565b6117ab9060306124c8565b60f81b8183815181106117ce57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a9053506117f0600a866124e0565b9450611782565b600061049f825490565b6000818152600183016020526040812054611848575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107d5565b5060006107d5565b60006001600160e01b031982166380ac58cd60e01b148061188157506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611c3c565b6106e4838383611c61565b606060006118aa8360026124f4565b6118b59060026124c8565b67ffffffffffffffff8111156118db57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611905576020820181803683370190505b509050600360fc1b8160008151811061192e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061196b57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600061198f8460026124f4565b61199a9060016124c8565b90505b6001811115611a2e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119dc57634e487b7160e01b600052603260045260246000fd5b1a60f81b828281518110611a0057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611a2781612556565b905061199d565b508315610cad5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105ae565b611a878282610cb4565b15610855576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610cad836001600160a01b038416611cd3565b6000826000018281548110611b1c57634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905092915050565b60006001600160a01b0384163b15611c3157604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290611b739033908990889088906004016123d5565b602060405180830381600087803b158015611b8d57600080fd5b505af1925050508015611bbd575060408051601f3d908101601f19168201909252611bba918101906122e9565b60015b611c17573d808015611beb576040519150601f19603f3d011682016040523d82523d6000602084013e611bf0565b606091505b508051611c0f5760405162461bcd60e51b81526004016105ae90612425565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611061565b506001949350505050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611df0565b611c6c838383611e25565b600c5460ff16156106e45760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105ae565b60008181526001830160205260408120548015611de6576000611cf7600183612513565b8554909150600090611d0b90600190612513565b9050818114611d8c576000866000018281548110611d3957634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080876000018481548110611d6a57634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611dab57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107d5565b60009150506107d5565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001600160a01b038316611e8057611e7b81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611ea3565b816001600160a01b0316836001600160a01b031614611ea357611ea38382611ee2565b6001600160a01b038216611ebf57611eba81611f7f565b6106e4565b826001600160a01b0316826001600160a01b0316146106e4576106e48282612058565b60006001611eef84610b6a565b611ef99190612513565b600083815260096020526040902054909150808214611f4c576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611f9190600190612513565b6000838152600b6020526040812054600a8054939450909284908110611fc757634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600a8381548110611ff657634e487b7160e01b600052603260045260246000fd5b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a80548061203c57634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061206383610b6a565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b80356001600160a01b03811681146104a257600080fd5b6000602082840312156120c4578081fd5b610cad8261209c565b600080604083850312156120df578081fd5b6120e88361209c565b91506120f66020840161209c565b90509250929050565b600080600060608486031215612113578081fd5b61211c8461209c565b925061212a6020850161209c565b9150604084013590509250925092565b6000806000806080858703121561214f578081fd5b6121588561209c565b93506121666020860161209c565b925060408501359150606085013567ffffffffffffffff80821115612189578283fd5b818701915087601f83011261219c578283fd5b8135818111156121ae576121ae612603565b604051601f8201601f19908116603f011681019083821181831017156121d6576121d6612603565b816040528281528a60208487010111156121ee578586fd5b82602086016020830137918201602001949094529598949750929550505050565b60008060408385031215612221578182fd5b61222a8361209c565b91506020830135801515811461223e578182fd5b809150509250929050565b6000806040838503121561225b578182fd5b6122648361209c565b946020939093013593505050565b600060208284031215612283578081fd5b5035919050565b6000806040838503121561229c578182fd5b823591506120f66020840161209c565b600080604083850312156122be578182fd5b50508035926020909101359150565b6000602082840312156122de578081fd5b8135610cad81612619565b6000602082840312156122fa578081fd5b8151610cad81612619565b6000815180845261231d81602086016020860161252a565b601f01601f19169290920160200192915050565b6000835161234381846020880161252a565b83519083019061235781836020880161252a565b01949350505050565b60007f416363657373436f6e74726f6c3a206163636f756e74200000000000000000008252835161239881601785016020880161252a565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516123c981602884016020880161252a565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061240890830184612305565b9695505050505050565b600060208252610cad6020830184612305565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b600082198211156124db576124db6125d7565b500190565b6000826124ef576124ef6125ed565b500490565b600081600019048311821515161561250e5761250e6125d7565b500290565b600082821015612525576125256125d7565b500390565b60005b8381101561254557818101518382015260200161252d565b83811115610d295750506000910152565b600081612565576125656125d7565b506000190190565b600181811c9082168061258157607f821691505b602082108114156125a257634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156125bc576125bc6125d7565b5060010190565b6000826125d2576125d26125ed565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b03198116811461099357600080fdfea2646970667358221220be0b7552d217eac6974aceb18f07c9ab982f1408445f8a7a3d26c33a59923e7864736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162002a0738038062002a078339810160408190526200003491620003cc565b8251839083906200004d90600290602085019062000259565b5080516200006390600390602084019062000259565b5050600c805460ff191690555080516200008590600e90602084019062000259565b5062000093600033620000f4565b620000bf7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633620000f4565b620000eb7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33620000f4565b50505062000499565b62000100828262000104565b5050565b6200011b82826200014760201b62000cec1760201c565b60008281526001602090815260409091206200014291839062000d70620001e7821b17901c565b505050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000100576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620001a33390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000620001fe836001600160a01b03841662000207565b90505b92915050565b6000818152600183016020526040812054620002505750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000201565b50600062000201565b82805462000267906200045d565b90600052602060002090601f0160209004810192826200028b5760008555620002d6565b82601f10620002a657805160ff1916838001178555620002d6565b82800160010185558215620002d6579182015b82811115620002d6578251825591602001919060010190620002b9565b50620002e4929150620002e8565b5090565b5b80821115620002e45760008155600101620002e9565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200032757600080fd5b81516001600160401b0380821115620003445762000344620002ff565b604051601f8301601f19908116603f011681019082821181831017156200036f576200036f620002ff565b816040528381526020925086838588010111156200038c57600080fd5b600091505b83821015620003b0578582018301518183018401529082019062000391565b83821115620003c25760008385830101525b9695505050505050565b600080600060608486031215620003e257600080fd5b83516001600160401b0380821115620003fa57600080fd5b620004088783880162000315565b945060208601519150808211156200041f57600080fd5b6200042d8783880162000315565b935060408601519150808211156200044457600080fd5b50620004538682870162000315565b9150509250925092565b600181811c908216806200047257607f821691505b6020821081036200049357634e487b7160e01b600052602260045260246000fd5b50919050565b61255e80620004a96000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611f81565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611ff6565b61023a610235366004612009565b610537565b6040516001600160a01b039091168152602001610209565b61026561026036600461203e565b61055e565b005b600a545b604051908152602001610209565b610265610287366004612068565b610678565b61026b61029a366004612009565b60009081526020819052604090206001015490565b6102656102bd3660046120a4565b6106aa565b61026b6102d036600461203e565b6106cf565b6102656102e33660046120a4565b610765565b6102656107e3565b6102656102fe366004612068565b61088b565b610265610311366004612009565b6108a6565b61026b610324366004612009565b6108d7565b600c5460ff166101fd565b61023a610342366004612009565b61096a565b6102656103553660046120d0565b6109ca565b61026b6103683660046120d0565b610a86565b610265610b0c565b61023a6103833660046120eb565b610bb0565b6101fd6103963660046120a4565b610bcf565b61021a610bf8565b61026b600081565b6102656103b936600461210d565b610c07565b6102656103cc36600461215f565b610c12565b61021a6103df366004612009565b610c4a565b61026b6103f2366004612009565b610cb0565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c3660046120a4565b610cc7565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd61046636600461223b565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d85565b92915050565b6060600280546104b490612265565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612265565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610daa565b506000908152600660205260409020546001600160a01b031690565b60006105698261096a565b9050806001600160a01b0316836001600160a01b0316036105db5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f757506105f78133610466565b6106695760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105d2565b6106738383610e09565b505050565b610683335b82610e77565b61069f5760405162461bcd60e51b81526004016105d29061229f565b610673838383610ef6565b6000828152602081905260409020600101546106c581611067565b6106738383611071565b60006106da83610a86565b821061073c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d2565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d2565b6107df8282611093565b5050565b61080d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bcf565b610881576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d2565b6108896110b5565b565b61067383838360405180602001604052806000815250610c12565b6108af3361067d565b6108cb5760405162461bcd60e51b81526004016105d29061229f565b6108d481611107565b50565b60006108e2600a5490565b82106109455760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d2565b600a8281548110610958576109586122ec565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d2565b6109f47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bcf565b610a665760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d2565b610a7881610a73600d5490565b6111aa565b6108d4600d80546001019055565b60006001600160a01b038216610af05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d2565b506001600160a01b031660009081526005602052604090205490565b610b367f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bcf565b610ba85760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d2565b610889611343565b6000828152600160205260408120610bc89083611380565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612265565b6107df33838361138c565b610c1c3383610e77565b610c385760405162461bcd60e51b81526004016105d29061229f565b610c448484848461145a565b50505050565b6060610c5582610daa565b6000610c5f61148d565b90506000815111610c7f5760405180602001604052806000815250610bc8565b80610c898461149c565b604051602001610c9a929190612302565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061152f565b600082815260208190526040902060010154610ce281611067565b6106738383611093565b610cf68282610bcf565b6107df576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc8836001600160a01b038416611539565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f82611588565b6000818152600460205260409020546001600160a01b03166108d45760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d2565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3e8261096a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e838361096a565b9050806001600160a01b0316846001600160a01b03161480610eca57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eee5750836001600160a01b0316610ee384610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f098261096a565b6001600160a01b031614610f2f5760405162461bcd60e51b81526004016105d290612331565b6001600160a01b038216610f915760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d2565b610f9e83838360016115c8565b826001600160a01b0316610fb18261096a565b6001600160a01b031614610fd75760405162461bcd60e51b81526004016105d290612331565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260058552838620805460001901905590871680865283862080546001019055868652600490945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d481336115d4565b61107b8282610cec565b60008281526001602052604090206106739082610d70565b61109d828261162d565b60008281526001602052604090206106739082611692565b6110bd6116a7565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111128261096a565b90506111228160008460016115c8565b61112b8261096a565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526005845282852080546000190190558785526004909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166112005760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d2565b6000818152600460205260409020546001600160a01b0316156112655760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d2565b6112736000838360016115c8565b6000818152600460205260409020546001600160a01b0316156112d85760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d2565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61134b6116f0565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110ea3390565b6000610bc88383611736565b816001600160a01b0316836001600160a01b0316036113ed5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d2565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611465848484610ef6565b61147184848484611760565b610c445760405162461bcd60e51b81526004016105d290612376565b6060600e80546104b490612265565b606060006114a983611861565b600101905060008167ffffffffffffffff8111156114c9576114c9612149565b6040519080825280601f01601f1916602001820160405280156114f3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846114fd57509392505050565b600061049f825490565b60008181526001830160205260408120546115805750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b14806115b957506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611939565b610c448484848461195e565b6115de8282610bcf565b6107df576115eb816119d1565b6115f68360206119e3565b6040516020016116079291906123c8565b60408051601f198184030181529082905262461bcd60e51b82526105d291600401611ff6565b6116378282610bcf565b156107df576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc8836001600160a01b038416611b7f565b600c5460ff166108895760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d2565b600c5460ff16156108895760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d2565b600082600001828154811061174d5761174d6122ec565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561185657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906117a490339089908890889060040161243d565b6020604051808303816000875af19250505080156117df575060408051601f3d908101601f191682019092526117dc9181019061247a565b60015b61183c573d80801561180d576040519150601f19603f3d011682016040523d82523d6000602084013e611812565b606091505b5080516000036118345760405162461bcd60e51b81526004016105d290612376565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eee565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118a05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106118cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118ea57662386f26fc10000830492506010015b6305f5e1008310611902576305f5e100830492506008015b612710831061191657612710830492506004015b60648310611928576064830492506002015b600a831061049f5760010192915050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611c72565b61196a84848484611ca7565b600c5460ff1615610c445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d2565b606061049f6001600160a01b03831660145b606060006119f28360026124ad565b6119fd9060026124cc565b67ffffffffffffffff811115611a1557611a15612149565b6040519080825280601f01601f191660200182016040528015611a3f576020820181803683370190505b509050600360fc1b81600081518110611a5a57611a5a6122ec565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a8957611a896122ec565b60200101906001600160f81b031916908160001a9053506000611aad8460026124ad565b611ab89060016124cc565b90505b6001811115611b30576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611aec57611aec6122ec565b1a60f81b828281518110611b0257611b026122ec565b60200101906001600160f81b031916908160001a90535060049490941c93611b29816124e4565b9050611abb565b508315610bc85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d2565b60008181526001830160205260408120548015611c68576000611ba36001836124fb565b8554909150600090611bb7906001906124fb565b9050818114611c1c576000866000018281548110611bd757611bd76122ec565b9060005260206000200154905080876000018481548110611bfa57611bfa6122ec565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c2d57611c2d612512565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001811115611d165760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016105d2565b816001600160a01b038516611d7257611d6d81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611d95565b836001600160a01b0316856001600160a01b031614611d9557611d958582611ddb565b6001600160a01b038416611db157611dac81611e78565b611dd4565b846001600160a01b0316846001600160a01b031614611dd457611dd48482611f27565b5050505050565b60006001611de884610a86565b611df291906124fb565b600083815260096020526040902054909150808214611e45576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611e8a906001906124fb565b6000838152600b6020526040812054600a8054939450909284908110611eb257611eb26122ec565b9060005260206000200154905080600a8381548110611ed357611ed36122ec565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611f0b57611f0b612512565b6001900381819060005260206000200160009055905550505050565b6000611f3283610a86565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d457600080fd5b600060208284031215611f9357600080fd5b8135610bc881611f6b565b60005b83811015611fb9578181015183820152602001611fa1565b83811115610c445750506000910152565b60008151808452611fe2816020860160208601611f9e565b601f01601f19169290920160200192915050565b602081526000610bc86020830184611fca565b60006020828403121561201b57600080fd5b5035919050565b80356001600160a01b038116811461203957600080fd5b919050565b6000806040838503121561205157600080fd5b61205a83612022565b946020939093013593505050565b60008060006060848603121561207d57600080fd5b61208684612022565b925061209460208501612022565b9150604084013590509250925092565b600080604083850312156120b757600080fd5b823591506120c760208401612022565b90509250929050565b6000602082840312156120e257600080fd5b610bc882612022565b600080604083850312156120fe57600080fd5b50508035926020909101359150565b6000806040838503121561212057600080fd5b61212983612022565b91506020830135801515811461213e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561217557600080fd5b61217e85612022565b935061218c60208601612022565b925060408501359150606085013567ffffffffffffffff808211156121b057600080fd5b818701915087601f8301126121c457600080fd5b8135818111156121d6576121d6612149565b604051601f8201601f19908116603f011681019083821181831017156121fe576121fe612149565b816040528281528a602084870101111561221757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561224e57600080fd5b61225783612022565b91506120c760208401612022565b600181811c9082168061227957607f821691505b60208210810361229957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612314818460208801611f9e565b835190830190612328818360208801611f9e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612400816017850160208801611f9e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612431816028840160208801611f9e565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061247090830184611fca565b9695505050505050565b60006020828403121561248c57600080fd5b8151610bc881611f6b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156124c7576124c7612497565b500290565b600082198211156124df576124df612497565b500190565b6000816124f3576124f3612497565b506000190190565b60008282101561250d5761250d612497565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cfd1973198752b9be878ad342b8a8e9977281479b917a502ada04e82f396427464736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636352211e1161010f578063a22cb465116100a2578063d539139311610071578063d5391393146103f7578063d547741f1461041e578063e63ab1e914610431578063e985e9c51461045857600080fd5b8063a22cb465146103ab578063b88d4fde146103be578063c87b56dd146103d1578063ca15c873146103e457600080fd5b80639010d07c116100de5780639010d07c1461037557806391d148541461038857806395d89b411461039b578063a217fddf146103a357600080fd5b80636352211e146103345780636a6278421461034757806370a082311461035a5780638456cb591461036d57600080fd5b80632f2ff15d1161018757806342842e0e1161015657806342842e0e146102f057806342966c68146103035780634f6ccce7146103165780635c975abb1461032957600080fd5b80632f2ff15d146102af5780632f745c59146102c257806336568abe146102d55780633f4ba83a146102e857600080fd5b8063095ea7b3116101c3578063095ea7b31461025257806318160ddd1461026757806323b872dd14610279578063248a9ca31461028c57600080fd5b806301ffc9a7146101ea57806306fdde0314610212578063081812fc14610227575b600080fd5b6101fd6101f8366004611f81565b610494565b60405190151581526020015b60405180910390f35b61021a6104a5565b6040516102099190611ff6565b61023a610235366004612009565b610537565b6040516001600160a01b039091168152602001610209565b61026561026036600461203e565b61055e565b005b600a545b604051908152602001610209565b610265610287366004612068565b610678565b61026b61029a366004612009565b60009081526020819052604090206001015490565b6102656102bd3660046120a4565b6106aa565b61026b6102d036600461203e565b6106cf565b6102656102e33660046120a4565b610765565b6102656107e3565b6102656102fe366004612068565b61088b565b610265610311366004612009565b6108a6565b61026b610324366004612009565b6108d7565b600c5460ff166101fd565b61023a610342366004612009565b61096a565b6102656103553660046120d0565b6109ca565b61026b6103683660046120d0565b610a86565b610265610b0c565b61023a6103833660046120eb565b610bb0565b6101fd6103963660046120a4565b610bcf565b61021a610bf8565b61026b600081565b6102656103b936600461210d565b610c07565b6102656103cc36600461215f565b610c12565b61021a6103df366004612009565b610c4a565b61026b6103f2366004612009565b610cb0565b61026b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a681565b61026561042c3660046120a4565b610cc7565b61026b7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a81565b6101fd61046636600461223b565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205460ff1690565b600061049f82610d85565b92915050565b6060600280546104b490612265565b80601f01602080910402602001604051908101604052809291908181526020018280546104e090612265565b801561052d5780601f106105025761010080835404028352916020019161052d565b820191906000526020600020905b81548152906001019060200180831161051057829003601f168201915b5050505050905090565b600061054282610daa565b506000908152600660205260409020546001600160a01b031690565b60006105698261096a565b9050806001600160a01b0316836001600160a01b0316036105db5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b60648201526084015b60405180910390fd5b336001600160a01b03821614806105f757506105f78133610466565b6106695760405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c00000060648201526084016105d2565b6106738383610e09565b505050565b610683335b82610e77565b61069f5760405162461bcd60e51b81526004016105d29061229f565b610673838383610ef6565b6000828152602081905260409020600101546106c581611067565b6106738383611071565b60006106da83610a86565b821061073c5760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b60648201526084016105d2565b506001600160a01b03919091166000908152600860209081526040808320938352929052205490565b6001600160a01b03811633146107d55760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016105d2565b6107df8282611093565b5050565b61080d7f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bcf565b610881576040805162461bcd60e51b81526020600482015260248101919091527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f20756e706175736560648201526084016105d2565b6108896110b5565b565b61067383838360405180602001604052806000815250610c12565b6108af3361067d565b6108cb5760405162461bcd60e51b81526004016105d29061229f565b6108d481611107565b50565b60006108e2600a5490565b82106109455760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b60648201526084016105d2565b600a8281548110610958576109586122ec565b90600052602060002001549050919050565b6000818152600460205260408120546001600160a01b03168061049f5760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d2565b6109f47f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a633610bcf565b610a665760405162461bcd60e51b815260206004820152603d60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d7573742068617665206d696e74657220726f6c6520746f206d696e7400000060648201526084016105d2565b610a7881610a73600d5490565b6111aa565b6108d4600d80546001019055565b60006001600160a01b038216610af05760405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b60648201526084016105d2565b506001600160a01b031660009081526005602052604090205490565b610b367f65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a33610bcf565b610ba85760405162461bcd60e51b815260206004820152603e60248201527f4552433732315072657365744d696e7465725061757365724175746f49643a2060448201527f6d75737420686176652070617573657220726f6c6520746f207061757365000060648201526084016105d2565b610889611343565b6000828152600160205260408120610bc89083611380565b9392505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b6060600380546104b490612265565b6107df33838361138c565b610c1c3383610e77565b610c385760405162461bcd60e51b81526004016105d29061229f565b610c448484848461145a565b50505050565b6060610c5582610daa565b6000610c5f61148d565b90506000815111610c7f5760405180602001604052806000815250610bc8565b80610c898461149c565b604051602001610c9a929190612302565b6040516020818303038152906040529392505050565b600081815260016020526040812061049f9061152f565b600082815260208190526040902060010154610ce281611067565b6106738383611093565b610cf68282610bcf565b6107df576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610d2c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000610bc8836001600160a01b038416611539565b60006001600160e01b0319821663780e9d6360e01b148061049f575061049f82611588565b6000818152600460205260409020546001600160a01b03166108d45760405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b60448201526064016105d2565b600081815260066020526040902080546001600160a01b0319166001600160a01b0384169081179091558190610e3e8261096a565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b600080610e838361096a565b9050806001600160a01b0316846001600160a01b03161480610eca57506001600160a01b0380821660009081526007602090815260408083209388168352929052205460ff165b80610eee5750836001600160a01b0316610ee384610537565b6001600160a01b0316145b949350505050565b826001600160a01b0316610f098261096a565b6001600160a01b031614610f2f5760405162461bcd60e51b81526004016105d290612331565b6001600160a01b038216610f915760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b60648201526084016105d2565b610f9e83838360016115c8565b826001600160a01b0316610fb18261096a565b6001600160a01b031614610fd75760405162461bcd60e51b81526004016105d290612331565b600081815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0387811680865260058552838620805460001901905590871680865283862080546001019055868652600490945282852080549092168417909155905184937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108d481336115d4565b61107b8282610cec565b60008281526001602052604090206106739082610d70565b61109d828261162d565b60008281526001602052604090206106739082611692565b6110bd6116a7565b600c805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b60006111128261096a565b90506111228160008460016115c8565b61112b8261096a565b600083815260066020908152604080832080546001600160a01b03199081169091556001600160a01b0385168085526005845282852080546000190190558785526004909352818420805490911690555192935084927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0382166112005760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f206164647265737360448201526064016105d2565b6000818152600460205260409020546001600160a01b0316156112655760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d2565b6112736000838360016115c8565b6000818152600460205260409020546001600160a01b0316156112d85760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e7465640000000060448201526064016105d2565b6001600160a01b038216600081815260056020908152604080832080546001019055848352600490915280822080546001600160a01b0319168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b61134b6116f0565b600c805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586110ea3390565b6000610bc88383611736565b816001600160a01b0316836001600160a01b0316036113ed5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c65720000000000000060448201526064016105d2565b6001600160a01b03838116600081815260076020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b611465848484610ef6565b61147184848484611760565b610c445760405162461bcd60e51b81526004016105d290612376565b6060600e80546104b490612265565b606060006114a983611861565b600101905060008167ffffffffffffffff8111156114c9576114c9612149565b6040519080825280601f01601f1916602001820160405280156114f3576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846114fd57509392505050565b600061049f825490565b60008181526001830160205260408120546115805750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561049f565b50600061049f565b60006001600160e01b031982166380ac58cd60e01b14806115b957506001600160e01b03198216635b5e139f60e01b145b8061049f575061049f82611939565b610c448484848461195e565b6115de8282610bcf565b6107df576115eb816119d1565b6115f68360206119e3565b6040516020016116079291906123c8565b60408051601f198184030181529082905262461bcd60e51b82526105d291600401611ff6565b6116378282610bcf565b156107df576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610bc8836001600160a01b038416611b7f565b600c5460ff166108895760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016105d2565b600c5460ff16156108895760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016105d2565b600082600001828154811061174d5761174d6122ec565b9060005260206000200154905092915050565b60006001600160a01b0384163b1561185657604051630a85bd0160e11b81526001600160a01b0385169063150b7a02906117a490339089908890889060040161243d565b6020604051808303816000875af19250505080156117df575060408051601f3d908101601f191682019092526117dc9181019061247a565b60015b61183c573d80801561180d576040519150601f19603f3d011682016040523d82523d6000602084013e611812565b606091505b5080516000036118345760405162461bcd60e51b81526004016105d290612376565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050610eee565b506001949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106118a05772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106118cc576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106118ea57662386f26fc10000830492506010015b6305f5e1008310611902576305f5e100830492506008015b612710831061191657612710830492506004015b60648310611928576064830492506002015b600a831061049f5760010192915050565b60006001600160e01b03198216635a05180f60e01b148061049f575061049f82611c72565b61196a84848484611ca7565b600c5460ff1615610c445760405162461bcd60e51b815260206004820152602b60248201527f4552433732315061757361626c653a20746f6b656e207472616e73666572207760448201526a1a1a5b19481c185d5cd95960aa1b60648201526084016105d2565b606061049f6001600160a01b03831660145b606060006119f28360026124ad565b6119fd9060026124cc565b67ffffffffffffffff811115611a1557611a15612149565b6040519080825280601f01601f191660200182016040528015611a3f576020820181803683370190505b509050600360fc1b81600081518110611a5a57611a5a6122ec565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110611a8957611a896122ec565b60200101906001600160f81b031916908160001a9053506000611aad8460026124ad565b611ab89060016124cc565b90505b6001811115611b30576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110611aec57611aec6122ec565b1a60f81b828281518110611b0257611b026122ec565b60200101906001600160f81b031916908160001a90535060049490941c93611b29816124e4565b9050611abb565b508315610bc85760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016105d2565b60008181526001830160205260408120548015611c68576000611ba36001836124fb565b8554909150600090611bb7906001906124fb565b9050818114611c1c576000866000018281548110611bd757611bd76122ec565b9060005260206000200154905080876000018481548110611bfa57611bfa6122ec565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611c2d57611c2d612512565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061049f565b600091505061049f565b60006001600160e01b03198216637965db0b60e01b148061049f57506301ffc9a760e01b6001600160e01b031983161461049f565b6001811115611d165760405162461bcd60e51b815260206004820152603560248201527f455243373231456e756d657261626c653a20636f6e7365637574697665207472604482015274185b9cd9995c9cc81b9bdd081cdd5c1c1bdc9d1959605a1b60648201526084016105d2565b816001600160a01b038516611d7257611d6d81600a80546000838152600b60205260408120829055600182018355919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a80155565b611d95565b836001600160a01b0316856001600160a01b031614611d9557611d958582611ddb565b6001600160a01b038416611db157611dac81611e78565b611dd4565b846001600160a01b0316846001600160a01b031614611dd457611dd48482611f27565b5050505050565b60006001611de884610a86565b611df291906124fb565b600083815260096020526040902054909150808214611e45576001600160a01b03841660009081526008602090815260408083208584528252808320548484528184208190558352600990915290208190555b5060009182526009602090815260408084208490556001600160a01b039094168352600881528383209183525290812055565b600a54600090611e8a906001906124fb565b6000838152600b6020526040812054600a8054939450909284908110611eb257611eb26122ec565b9060005260206000200154905080600a8381548110611ed357611ed36122ec565b6000918252602080832090910192909255828152600b9091526040808220849055858252812055600a805480611f0b57611f0b612512565b6001900381819060005260206000200160009055905550505050565b6000611f3283610a86565b6001600160a01b039093166000908152600860209081526040808320868452825280832085905593825260099052919091209190915550565b6001600160e01b0319811681146108d457600080fd5b600060208284031215611f9357600080fd5b8135610bc881611f6b565b60005b83811015611fb9578181015183820152602001611fa1565b83811115610c445750506000910152565b60008151808452611fe2816020860160208601611f9e565b601f01601f19169290920160200192915050565b602081526000610bc86020830184611fca565b60006020828403121561201b57600080fd5b5035919050565b80356001600160a01b038116811461203957600080fd5b919050565b6000806040838503121561205157600080fd5b61205a83612022565b946020939093013593505050565b60008060006060848603121561207d57600080fd5b61208684612022565b925061209460208501612022565b9150604084013590509250925092565b600080604083850312156120b757600080fd5b823591506120c760208401612022565b90509250929050565b6000602082840312156120e257600080fd5b610bc882612022565b600080604083850312156120fe57600080fd5b50508035926020909101359150565b6000806040838503121561212057600080fd5b61212983612022565b91506020830135801515811461213e57600080fd5b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b6000806000806080858703121561217557600080fd5b61217e85612022565b935061218c60208601612022565b925060408501359150606085013567ffffffffffffffff808211156121b057600080fd5b818701915087601f8301126121c457600080fd5b8135818111156121d6576121d6612149565b604051601f8201601f19908116603f011681019083821181831017156121fe576121fe612149565b816040528281528a602084870101111561221757600080fd5b82602086016020830137600060208483010152809550505050505092959194509250565b6000806040838503121561224e57600080fd5b61225783612022565b91506120c760208401612022565b600181811c9082168061227957607f821691505b60208210810361229957634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602d908201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560408201526c1c881bdc88185c1c1c9bdd9959609a1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b60008351612314818460208801611f9e565b835190830190612328818360208801611f9e565b01949350505050565b60208082526025908201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060408201526437bbb732b960d91b606082015260800190565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351612400816017850160208801611f9e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351612431816028840160208801611f9e565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061247090830184611fca565b9695505050505050565b60006020828403121561248c57600080fd5b8151610bc881611f6b565b634e487b7160e01b600052601160045260246000fd5b60008160001904831182151516156124c7576124c7612497565b500290565b600082198211156124df576124df612497565b500190565b6000816124f3576124f3612497565b506000190190565b60008282101561250d5761250d612497565b500390565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220cfd1973198752b9be878ad342b8a8e9977281479b917a502ada04e82f396427464736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -60,2 +60,34 @@ {

{
"indexed": false,
"internalType": "uint256",
"name": "_fromTokenId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint256",
"name": "_toTokenId",
"type": "uint256"
}
],
"name": "BatchMetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "_tokenId",
"type": "uint256"
}
],
"name": "MetadataUpdate",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,

@@ -236,3 +268,3 @@ "internalType": "address",

"internalType": "bytes",
"name": "_data",
"name": "data",
"type": "bytes"

@@ -239,0 +271,0 @@ }

@@ -583,6 +583,6 @@ {

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001d3b38038062001d3b8339810160408190526200003491620003b0565b82516200004990600290602086019062000221565b5081516200005f90600390602085019062000221565b50805162000075906004906020840190620002b0565b5060005b8151811015620000f157600160056000848481518110620000aa57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e88162000535565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016c57600080fd5b505af115801562000181573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001ff57600080fd5b505af115801562000214573d6000803e3d6000fd5b5050505050505062000573565b8280546200022f90620004f8565b90600052602060002090601f0160209004810192826200025357600085556200029e565b82601f106200026e57805160ff19168380011785556200029e565b828001600101855582156200029e579182015b828111156200029e57825182559160200191906001019062000281565b50620002ac92915062000308565b5090565b8280548282559060005260206000209081019282156200029e579160200282015b828111156200029e57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002d1565b5b80821115620002ac576000815560010162000309565b600082601f83011262000330578081fd5b81516001600160401b038111156200034c576200034c6200055d565b602062000362601f8301601f19168201620004c5565b828152858284870101111562000376578384fd5b835b838110156200039557858101830151828201840152820162000378565b83811115620003a657848385840101525b5095945050505050565b600080600060608486031215620003c5578283fd5b83516001600160401b0380821115620003dc578485fd5b620003ea878388016200031f565b945060209150818601518181111562000401578485fd5b6200040f888289016200031f565b94505060408601518181111562000424578384fd5b8601601f8101881362000435578384fd5b8051828111156200044a576200044a6200055d565b8060051b92506200045d848401620004c5565b8181528481019083860185850187018c101562000478578788fd5b8795505b83861015620004b457805194506001600160a01b03851685146200049e578788fd5b848352600195909501949186019186016200047c565b508096505050505050509250925092565b604051601f8201601f191681016001600160401b0381118282101715620004f057620004f06200055d565b604052919050565b600181811c908216806200050d57607f821691505b602082108114156200052f57634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156200055657634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b6117b880620005836000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57610116565b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857610116565b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157610116565b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906115af565b60405180910390f35b610141610312565b60405161013091906115fc565b61016161015c3660046113c6565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046112f6565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611336565b61057c565b005b6101756101cf366004611286565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611286565b6105b8565b6101416106d6565b6101bf6102133660046113f1565b6106e5565b6101616102263660046113c6565b610708565b6101616102393660046112be565b6107bb565b61017561024c3660046112be565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611286565b61085d565b6101bf610298366004611448565b610979565b6101bf6102ab3660046114c5565b6109b1565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b60606002805461032190611703565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611703565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856109d0565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db9061160f565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610af7565b6104a6818686866040518060200160405280600081525060405180602001604052806000815250610c2e565b6001600160a01b038086166000908152600860209081526040808320938516835292905220548381101561052e5760405162461bcd60e51b815260206004820152602960248201527f4552433737373a207472616e7366657220616d6f756e74206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016103db565b610542868361053d87856116ec565b6109d0565b6105708287878760405180602001604052806000815250604051806020016040528060008152506000610d94565b50600195945050505050565b61058633866107bb565b6105a25760405162461bcd60e51b81526004016103db90611653565b6105b185858585856001610f68565b5050505050565b336001600160a01b038216141561061d5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff161561066e573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916905561069d565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b60606003805461032190611703565b61070333848484604051806020016040528060008152506001610f68565b505050565b60006001600160a01b0383166107305760405162461bcd60e51b81526004016103db9061160f565b6000339050610761818286866040518060200160405280600081525060405180602001604052806000815250610af7565b61078d818286866040518060200160405280600081525060405180602001604052806000815250610c2e565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d94565b6000816001600160a01b0316836001600160a01b0316148061082657506001600160a01b03831660009081526005602052604090205460ff16801561082657506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061085657506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156108c05760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff1615610914573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610940565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61098333856107bb565b61099f5760405162461bcd60e51b81526004016103db90611653565b6109ab8484848461104b565b50505050565b6109cc3383836040518060200160405280600081525061104b565b5050565b6001600160a01b038316610a345760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a965760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610b7357600080fd5b505afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab91906112a2565b90506001600160a01b03811615610c2557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610bf2908a908a908a908a908a908a90600401611555565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ca75760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610cde9084906116d4565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d369392919061169f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d8391815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610e1057600080fd5b505afa158015610e24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4891906112a2565b90506001600160a01b03811615610ec4576040516223de2960e01b81526001600160a01b038216906223de2990610e8d908b908b908b908b908b908b90600401611555565b600060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b50505050610f5e565b8115610f5e576001600160a01b0386163b15610f5e5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fc95760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b03851661101f5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b3361102e818888888888610af7565b61103c818888888888610c2e565b610c2581888888888888610d94565b6001600160a01b0384166110ac5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b336110bc81866000878787610af7565b6001600160a01b038516600090815260208190526040902054848110156111315760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b03861660009081526020819052604081208683039055600180548792906111609084906116ec565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988787876040516111ae9392919061169f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600082601f83011261120f578081fd5b813567ffffffffffffffff8082111561122a5761122a611754565b604051601f8301601f19908116603f0116810190828211818310171561125257611252611754565b8160405283815286602085880101111561126a578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611297578081fd5b81356108568161176a565b6000602082840312156112b3578081fd5b81516108568161176a565b600080604083850312156112d0578081fd5b82356112db8161176a565b915060208301356112eb8161176a565b809150509250929050565b60008060006060848603121561130a578081fd5b83356113158161176a565b925060208401356113258161176a565b929592945050506040919091013590565b600080600080600060a0868803121561134d578081fd5b85356113588161176a565b945060208601356113688161176a565b935060408601359250606086013567ffffffffffffffff8082111561138b578283fd5b61139789838a016111ff565b935060808801359150808211156113ac578283fd5b506113b9888289016111ff565b9150509295509295909350565b600080604083850312156113d8578182fd5b82356113e38161176a565b946020939093013593505050565b600080600060608486031215611405578283fd5b83356114108161176a565b925060208401359150604084013567ffffffffffffffff811115611432578182fd5b61143e868287016111ff565b9150509250925092565b6000806000806080858703121561145d578384fd5b84356114688161176a565b935060208501359250604085013567ffffffffffffffff8082111561148b578384fd5b611497888389016111ff565b935060608701359150808211156114ac578283fd5b506114b9878288016111ff565b91505092959194509250565b600080604083850312156114d7578182fd5b82359150602083013567ffffffffffffffff8111156114f4578182fd5b611500858286016111ff565b9150509250929050565b60008151808452815b8181101561152f57602081850181015186830182015201611513565b818111156115405782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115909083018561150a565b82810360a08401526115a2818561150a565b9998505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115f05783516001600160a01b0316835292840192918401916001016115cb565b50909695505050505050565b600060208252610856602083018461150a565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000848252606060208301526116b8606083018561150a565b82810360408401526116ca818561150a565b9695505050505050565b600082198211156116e7576116e761173e565b500190565b6000828210156116fe576116fe61173e565b500390565b600181811c9082168061171757607f821691505b6020821081141561173857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461177f57600080fd5b5056fea26469706673582212202dcf46788532cd743b189926a93c96bf1868a70f7a6cc6d11f5ec2ea62b94dff64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57610116565b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857610116565b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157610116565b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906115af565b60405180910390f35b610141610312565b60405161013091906115fc565b61016161015c3660046113c6565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046112f6565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611336565b61057c565b005b6101756101cf366004611286565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611286565b6105b8565b6101416106d6565b6101bf6102133660046113f1565b6106e5565b6101616102263660046113c6565b610708565b6101616102393660046112be565b6107bb565b61017561024c3660046112be565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611286565b61085d565b6101bf610298366004611448565b610979565b6101bf6102ab3660046114c5565b6109b1565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b60606002805461032190611703565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611703565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856109d0565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db9061160f565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610af7565b6104a6818686866040518060200160405280600081525060405180602001604052806000815250610c2e565b6001600160a01b038086166000908152600860209081526040808320938516835292905220548381101561052e5760405162461bcd60e51b815260206004820152602960248201527f4552433737373a207472616e7366657220616d6f756e74206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016103db565b610542868361053d87856116ec565b6109d0565b6105708287878760405180602001604052806000815250604051806020016040528060008152506000610d94565b50600195945050505050565b61058633866107bb565b6105a25760405162461bcd60e51b81526004016103db90611653565b6105b185858585856001610f68565b5050505050565b336001600160a01b038216141561061d5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff161561066e573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916905561069d565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b60606003805461032190611703565b61070333848484604051806020016040528060008152506001610f68565b505050565b60006001600160a01b0383166107305760405162461bcd60e51b81526004016103db9061160f565b6000339050610761818286866040518060200160405280600081525060405180602001604052806000815250610af7565b61078d818286866040518060200160405280600081525060405180602001604052806000815250610c2e565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d94565b6000816001600160a01b0316836001600160a01b0316148061082657506001600160a01b03831660009081526005602052604090205460ff16801561082657506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061085657506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156108c05760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff1615610914573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610940565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61098333856107bb565b61099f5760405162461bcd60e51b81526004016103db90611653565b6109ab8484848461104b565b50505050565b6109cc3383836040518060200160405280600081525061104b565b5050565b6001600160a01b038316610a345760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a965760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610b7357600080fd5b505afa158015610b87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bab91906112a2565b90506001600160a01b03811615610c2557604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610bf2908a908a908a908a908a908a90600401611555565b600060405180830381600087803b158015610c0c57600080fd5b505af1158015610c20573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ca75760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610cde9084906116d4565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d369392919061169f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d8391815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610e1057600080fd5b505afa158015610e24573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4891906112a2565b90506001600160a01b03811615610ec4576040516223de2960e01b81526001600160a01b038216906223de2990610e8d908b908b908b908b908b908b90600401611555565b600060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b50505050610f5e565b8115610f5e576001600160a01b0386163b15610f5e5760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fc95760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b03851661101f5760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b3361102e818888888888610af7565b61103c818888888888610c2e565b610c2581888888888888610d94565b6001600160a01b0384166110ac5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b336110bc81866000878787610af7565b6001600160a01b038516600090815260208190526040902054848110156111315760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b03861660009081526020819052604081208683039055600180548792906111609084906116ec565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988787876040516111ae9392919061169f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600082601f83011261120f578081fd5b813567ffffffffffffffff8082111561122a5761122a611754565b604051601f8301601f19908116603f0116810190828211818310171561125257611252611754565b8160405283815286602085880101111561126a578485fd5b8360208701602083013792830160200193909352509392505050565b600060208284031215611297578081fd5b81356108568161176a565b6000602082840312156112b3578081fd5b81516108568161176a565b600080604083850312156112d0578081fd5b82356112db8161176a565b915060208301356112eb8161176a565b809150509250929050565b60008060006060848603121561130a578081fd5b83356113158161176a565b925060208401356113258161176a565b929592945050506040919091013590565b600080600080600060a0868803121561134d578081fd5b85356113588161176a565b945060208601356113688161176a565b935060408601359250606086013567ffffffffffffffff8082111561138b578283fd5b61139789838a016111ff565b935060808801359150808211156113ac578283fd5b506113b9888289016111ff565b9150509295509295909350565b600080604083850312156113d8578182fd5b82356113e38161176a565b946020939093013593505050565b600080600060608486031215611405578283fd5b83356114108161176a565b925060208401359150604084013567ffffffffffffffff811115611432578182fd5b61143e868287016111ff565b9150509250925092565b6000806000806080858703121561145d578384fd5b84356114688161176a565b935060208501359250604085013567ffffffffffffffff8082111561148b578384fd5b611497888389016111ff565b935060608701359150808211156114ac578283fd5b506114b9878288016111ff565b91505092959194509250565b600080604083850312156114d7578182fd5b82359150602083013567ffffffffffffffff8111156114f4578182fd5b611500858286016111ff565b9150509250929050565b60008151808452815b8181101561152f57602081850181015186830182015201611513565b818111156115405782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115909083018561150a565b82810360a08401526115a2818561150a565b9998505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115f05783516001600160a01b0316835292840192918401916001016115cb565b50909695505050505050565b600060208252610856602083018461150a565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000848252606060208301526116b8606083018561150a565b82810360408401526116ca818561150a565b9695505050505050565b600082198211156116e7576116e761173e565b500190565b6000828210156116fe576116fe61173e565b500390565b600181811c9082168061171757607f821691505b6020821081141561173857634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461177f57600080fd5b5056fea26469706673582212202dcf46788532cd743b189926a93c96bf1868a70f7a6cc6d11f5ec2ea62b94dff64736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001bab38038062001bab8339810160408190526200003491620003f1565b82516200004990600290602086019062000215565b5081516200005f90600390602085019062000215565b50805162000075906004906020840190620002a4565b5060005b8151811015620000e5576001600560008484815181106200009e576200009e62000508565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000dc816200051e565b91505062000079565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016057600080fd5b505af115801562000175573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f357600080fd5b505af115801562000208573d6000803e3d6000fd5b5050505050505062000582565b828054620002239062000546565b90600052602060002090601f01602090048101928262000247576000855562000292565b82601f106200026257805160ff191683800117855562000292565b8280016001018555821562000292579182015b828111156200029257825182559160200191906001019062000275565b50620002a0929150620002fc565b5090565b82805482825590600052602060002090810192821562000292579160200282015b828111156200029257825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190620002c5565b5b80821115620002a05760008155600101620002fd565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562000354576200035462000313565b604052919050565b600082601f8301126200036e57600080fd5b81516001600160401b038111156200038a576200038a62000313565b6020620003a0601f8301601f1916820162000329565b8281528582848701011115620003b557600080fd5b60005b83811015620003d5578581018301518282018401528201620003b8565b83811115620003e75760008385840101525b5095945050505050565b6000806000606084860312156200040757600080fd5b83516001600160401b03808211156200041f57600080fd5b6200042d878388016200035c565b94506020915081860151818111156200044557600080fd5b62000453888289016200035c565b9450506040860151818111156200046957600080fd5b8601601f810188136200047b57600080fd5b80518281111562000490576200049062000313565b8060051b9250620004a384840162000329565b818152928201840192848101908a851115620004be57600080fd5b928501925b84841015620004f857835192506001600160a01b0383168314620004e75760008081fd5b8282529285019290850190620004c3565b8096505050505050509250925092565b634e487b7160e01b600052603260045260246000fd5b6000600182016200053f57634e487b7160e01b600052601160045260246000fd5b5060010190565b600181811c908216806200055b57607f821691505b6020821081036200057c57634e487b7160e01b600052602260045260246000fd5b50919050565b61161980620005926000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b604051610130919061108e565b60405180910390f35b610141610312565b6040516101309190611128565b61016161015c366004611153565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461117f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611263565b6103f9565b005b6101756101cf3660046112f6565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f83660046112f6565b61043e565b61014161055b565b6101bf610213366004611313565b61056a565b610161610226366004611153565b61058d565b61016161023936600461136c565b6105c5565b61017561024c36600461136c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf6102853660046112f6565b610667565b6101bf6102983660046113a5565b610782565b6101bf6102ab366004611425565b6107ba565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061146c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061146c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107d9565b5060019392505050565b6000336103c1858285610900565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098c565b506001949350505050565b61040333866105c5565b6104285760405162461bcd60e51b815260040161041f906114a6565b60405180910390fd5b6104378585858585600161098c565b5050505050565b6001600160a01b03811633036104a25760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f3573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610522565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061146c565b6105883384848460405180602001604052806000815250600161098c565b505050565b60006105bc3384846040518060200160405280600081525060405180602001604052806000815250600061098c565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063057506001600160a01b03831660009081526005602052604090205460ff16801561063057506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066057506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b038216036106c95760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071d573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610749565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078c33856105c5565b6107a85760405162461bcd60e51b815260040161041f906114a6565b6107b484848484610a88565b50505050565b6107d533838360405180602001604052806000815250610a88565b5050565b6001600160a01b03831661083d5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b03821661089f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b4578181101561097f5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b484848484036107d9565b6001600160a01b0386166109f15760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a535760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a62818888888888610c3c565b610a70818888888888610d63565b610a7f81888888888888610ec9565b50505050505050565b6001600160a01b038416610ae95760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610af981866000878787610c3c565b6001600160a01b03851660009081526020819052604090205484811015610b6e5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9d908490611508565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610beb9392919061151f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611554565b90506001600160a01b03811615610a7f57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d28908a908a908a908a908a908a90600401611571565b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ddc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e139084906115cb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e6b9392919061151f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eb891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190611554565b90506001600160a01b03811615610fea576040516223de2960e01b81526001600160a01b038216906223de2990610fb3908b908b908b908b908b908b90600401611571565b600060405180830381600087803b158015610fcd57600080fd5b505af1158015610fe1573d6000803e3d6000fd5b50505050611084565b8115611084576001600160a01b0386163b156110845760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110cf5783516001600160a01b0316835292840192918401916001016110aa565b50909695505050505050565b6000815180845260005b81811015611101576020818501810151868301820152016110e5565b81811115611113576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066060208301846110db565b6001600160a01b038116811461115057600080fd5b50565b6000806040838503121561116657600080fd5b82356111718161113b565b946020939093013593505050565b60008060006060848603121561119457600080fd5b833561119f8161113b565b925060208401356111af8161113b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126111e757600080fd5b813567ffffffffffffffff80821115611202576112026111c0565b604051601f8301601f19908116603f0116810190828211818310171561122a5761122a6111c0565b8160405283815286602085880101111561124357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561127b57600080fd5b85356112868161113b565b945060208601356112968161113b565b935060408601359250606086013567ffffffffffffffff808211156112ba57600080fd5b6112c689838a016111d6565b935060808801359150808211156112dc57600080fd5b506112e9888289016111d6565b9150509295509295909350565b60006020828403121561130857600080fd5b81356106608161113b565b60008060006060848603121561132857600080fd5b83356113338161113b565b925060208401359150604084013567ffffffffffffffff81111561135657600080fd5b611362868287016111d6565b9150509250925092565b6000806040838503121561137f57600080fd5b823561138a8161113b565b9150602083013561139a8161113b565b809150509250929050565b600080600080608085870312156113bb57600080fd5b84356113c68161113b565b935060208501359250604085013567ffffffffffffffff808211156113ea57600080fd5b6113f6888389016111d6565b9350606087013591508082111561140c57600080fd5b50611419878288016111d6565b91505092959194509250565b6000806040838503121561143857600080fd5b82359150602083013567ffffffffffffffff81111561145657600080fd5b611462858286016111d6565b9150509250929050565b600181811c9082168061148057607f821691505b6020821081036114a057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561151a5761151a6114f2565b500390565b83815260606020820152600061153860608301856110db565b828103604084015261154a81856110db565b9695505050505050565b60006020828403121561156657600080fd5b81516106608161113b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115ac908301856110db565b82810360a08401526115be81856110db565b9998505050505050505050565b600082198211156115de576115de6114f2565b50019056fea2646970667358221220e8e83af7037b5721e0219069b713e3de74b2f8745d1abe6f8409b94bbad4c1b064736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b604051610130919061108e565b60405180910390f35b610141610312565b6040516101309190611128565b61016161015c366004611153565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461117f565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611263565b6103f9565b005b6101756101cf3660046112f6565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f83660046112f6565b61043e565b61014161055b565b6101bf610213366004611313565b61056a565b610161610226366004611153565b61058d565b61016161023936600461136c565b6105c5565b61017561024c36600461136c565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf6102853660046112f6565b610667565b6101bf6102983660046113a5565b610782565b6101bf6102ab366004611425565b6107ba565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061146c565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061146c565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107d9565b5060019392505050565b6000336103c1858285610900565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061098c565b506001949350505050565b61040333866105c5565b6104285760405162461bcd60e51b815260040161041f906114a6565b60405180910390fd5b6104378585858585600161098c565b5050505050565b6001600160a01b03811633036104a25760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f3573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610522565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061146c565b6105883384848460405180602001604052806000815250600161098c565b505050565b60006105bc3384846040518060200160405280600081525060405180602001604052806000815250600061098c565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063057506001600160a01b03831660009081526005602052604090205460ff16801561063057506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066057506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b038216036106c95760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071d573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610749565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078c33856105c5565b6107a85760405162461bcd60e51b815260040161041f906114a6565b6107b484848484610a88565b50505050565b6107d533838360405180602001604052806000815250610a88565b5050565b6001600160a01b03831661083d5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b03821661089f5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b4578181101561097f5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b484848484036107d9565b6001600160a01b0386166109f15760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a535760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a62818888888888610c3c565b610a70818888888888610d63565b610a7f81888888888888610ec9565b50505050505050565b6001600160a01b038416610ae95760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610af981866000878787610c3c565b6001600160a01b03851660009081526020819052604090205484811015610b6e5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610b9d908490611508565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610beb9392919061151f565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ce19190611554565b90506001600160a01b03811615610a7f57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d28908a908a908a908a908a908a90600401611571565b600060405180830381600087803b158015610d4257600080fd5b505af1158015610d56573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610ddc5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e139084906115cb565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e6b9392919061151f565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610eb891815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610f4a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f6e9190611554565b90506001600160a01b03811615610fea576040516223de2960e01b81526001600160a01b038216906223de2990610fb3908b908b908b908b908b908b90600401611571565b600060405180830381600087803b158015610fcd57600080fd5b505af1158015610fe1573d6000803e3d6000fd5b50505050611084565b8115611084576001600160a01b0386163b156110845760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110cf5783516001600160a01b0316835292840192918401916001016110aa565b50909695505050505050565b6000815180845260005b81811015611101576020818501810151868301820152016110e5565b81811115611113576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066060208301846110db565b6001600160a01b038116811461115057600080fd5b50565b6000806040838503121561116657600080fd5b82356111718161113b565b946020939093013593505050565b60008060006060848603121561119457600080fd5b833561119f8161113b565b925060208401356111af8161113b565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126111e757600080fd5b813567ffffffffffffffff80821115611202576112026111c0565b604051601f8301601f19908116603f0116810190828211818310171561122a5761122a6111c0565b8160405283815286602085880101111561124357600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561127b57600080fd5b85356112868161113b565b945060208601356112968161113b565b935060408601359250606086013567ffffffffffffffff808211156112ba57600080fd5b6112c689838a016111d6565b935060808801359150808211156112dc57600080fd5b506112e9888289016111d6565b9150509295509295909350565b60006020828403121561130857600080fd5b81356106608161113b565b60008060006060848603121561132857600080fd5b83356113338161113b565b925060208401359150604084013567ffffffffffffffff81111561135657600080fd5b611362868287016111d6565b9150509250925092565b6000806040838503121561137f57600080fd5b823561138a8161113b565b9150602083013561139a8161113b565b809150509250929050565b600080600080608085870312156113bb57600080fd5b84356113c68161113b565b935060208501359250604085013567ffffffffffffffff808211156113ea57600080fd5b6113f6888389016111d6565b9350606087013591508082111561140c57600080fd5b50611419878288016111d6565b91505092959194509250565b6000806040838503121561143857600080fd5b82359150602083013567ffffffffffffffff81111561145657600080fd5b611462858286016111d6565b9150509250929050565b600181811c9082168061148057607f821691505b6020821081036114a057634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561151a5761151a6114f2565b500390565b83815260606020820152600061153860608301856110db565b828103604084015261154a81856110db565b9695505050505050565b60006020828403121561156657600080fd5b81516106608161113b565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115ac908301856110db565b82810360a08401526115be81856110db565b9998505050505050505050565b600082198211156115de576115de6114f2565b50019056fea2646970667358221220e8e83af7037b5721e0219069b713e3de74b2f8745d1abe6f8409b94bbad4c1b064736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -593,6 +593,6 @@ {

],
"bytecode": "0x60806040523480156200001157600080fd5b506040516200222f3803806200222f833981016040819052620000349162000775565b84848482600290805190602001906200004f929190620005c9565b50815162000065906003906020850190620005c9565b5080516200007b90600490602084019062000658565b5060005b8151811015620000f757600160056000848481518110620000b057634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000ee8162000a17565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200017257600080fd5b505af115801562000187573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b1580156200020557600080fd5b505af11580156200021a573d6000803e3d6000fd5b5050505050505062000253818360405180602001604052806000815250604051806020016040528060008152506200025e60201b60201c565b505050505062000a61565b6200026e84848484600162000274565b50505050565b6001600160a01b038516620002d05760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002e9919062000990565b90915550506001600160a01b038616600090815260208190526040812080548792906200031890849062000990565b909155506200033090508160008888888888620003ca565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d878787604051620003799392919062000924565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b1580156200044757600080fd5b505afa1580156200045c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000482919062000751565b90506001600160a01b0381161562000504576040516223de2960e01b81526001600160a01b038216906223de2990620004ca908b908b908b908b908b908b90600401620008c6565b600060405180830381600087803b158015620004e557600080fd5b505af1158015620004fa573d6000803e3d6000fd5b50505050620005b5565b8115620005b5576200052a866001600160a01b0316620005bf60201b620009d01760201c565b15620005b55760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002c7565b5050505050505050565b803b15155b919050565b828054620005d790620009da565b90600052602060002090601f016020900481019282620005fb576000855562000646565b82601f106200061657805160ff191683800117855562000646565b8280016001018555821562000646579182015b828111156200064657825182559160200191906001019062000629565b5062000654929150620006b0565b5090565b82805482825590600052602060002090810192821562000646579160200282015b828111156200064657825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000679565b5b80821115620006545760008155600101620006b1565b80516001600160a01b0381168114620005c457600080fd5b600082601f830112620006f0578081fd5b81516001600160401b038111156200070c576200070c62000a4b565b62000721601f8201601f19166020016200095d565b81815284602083860101111562000736578283fd5b62000749826020830160208701620009ab565b949350505050565b60006020828403121562000763578081fd5b6200076e82620006c7565b9392505050565b600080600080600060a086880312156200078d578081fd5b85516001600160401b0380821115620007a4578283fd5b620007b289838a01620006df565b9650602091508188015181811115620007c9578384fd5b620007d78a828b01620006df565b965050604088015181811115620007ec578384fd5b8801601f81018a13620007fd578384fd5b80518281111562000812576200081262000a4b565b8060051b9250620008258484016200095d565b8181528481019083860185850187018e101562000840578788fd5b8795505b838610156200086d576200085881620006c7565b83526001959095019491860191860162000844565b50809850505050505050606086015191506200088c60808701620006c7565b90509295509295909350565b60008151808452620008b2816020860160208601620009ab565b601f01601f19169290920160200192915050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c060808201819052600090620009039083018562000898565b82810360a084015262000917818562000898565b9998505050505050505050565b6000848252606060208301526200093f606083018562000898565b828103604084015262000953818562000898565b9695505050505050565b604051601f8201601f191681016001600160401b038111828210171562000988576200098862000a4b565b604052919050565b60008219821115620009a657620009a662000a35565b500190565b60005b83811015620009c8578181015183820152602001620009ae565b838111156200026e5750506000910152565b600181811c90821680620009ef57607f821691505b6020821081141562000a1157634e487b7160e01b600052602260045260246000fd5b50919050565b600060001982141562000a2e5762000a2e62000a35565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6117be8062000a716000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57610116565b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857610116565b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157610116565b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906115b5565b60405180910390f35b610141610312565b6040516101309190611602565b61016161015c3660046113cc565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046112fc565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba36600461133c565b61057c565b005b6101756101cf36600461128c565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f836600461128c565b6105b8565b6101416106d6565b6101bf6102133660046113f7565b6106e5565b6101616102263660046113cc565b610708565b6101616102393660046112c4565b6107bb565b61017561024c3660046112c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf61028536600461128c565b61085d565b6101bf61029836600461144e565b610979565b6101bf6102ab3660046114cb565b6109b1565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b60606002805461032190611709565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611709565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856109d6565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db90611615565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610afd565b6104a6818686866040518060200160405280600081525060405180602001604052806000815250610c34565b6001600160a01b038086166000908152600860209081526040808320938516835292905220548381101561052e5760405162461bcd60e51b815260206004820152602960248201527f4552433737373a207472616e7366657220616d6f756e74206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016103db565b610542868361053d87856116f2565b6109d6565b6105708287878760405180602001604052806000815250604051806020016040528060008152506000610d9a565b50600195945050505050565b61058633866107bb565b6105a25760405162461bcd60e51b81526004016103db90611659565b6105b185858585856001610f6e565b5050505050565b336001600160a01b038216141561061d5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff161561066e573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916905561069d565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b60606003805461032190611709565b61070333848484604051806020016040528060008152506001610f6e565b505050565b60006001600160a01b0383166107305760405162461bcd60e51b81526004016103db90611615565b6000339050610761818286866040518060200160405280600081525060405180602001604052806000815250610afd565b61078d818286866040518060200160405280600081525060405180602001604052806000815250610c34565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d9a565b6000816001600160a01b0316836001600160a01b0316148061082657506001600160a01b03831660009081526005602052604090205460ff16801561082657506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061085657506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156108c05760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff1615610914573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610940565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61098333856107bb565b61099f5760405162461bcd60e51b81526004016103db90611659565b6109ab84848484611051565b50505050565b6109cc33838360405180602001604052806000815250611051565b5050565b3b151590565b6001600160a01b038316610a3a5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a9c5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb191906112a8565b90506001600160a01b03811615610c2b57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610bf8908a908a908a908a908a908a9060040161155b565b600060405180830381600087803b158015610c1257600080fd5b505af1158015610c26573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b03851660009081526020819052604090205483811015610cad5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610ce49084906116da565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d3c939291906116a5565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d8991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4e91906112a8565b90506001600160a01b03811615610eca576040516223de2960e01b81526001600160a01b038216906223de2990610e93908b908b908b908b908b908b9060040161155b565b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b50505050610f64565b8115610f64576001600160a01b0386163b15610f645760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fcf5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b0385166110255760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b33611034818888888888610afd565b611042818888888888610c34565b610c2b81888888888888610d9a565b6001600160a01b0384166110b25760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b336110c281866000878787610afd565b6001600160a01b038516600090815260208190526040902054848110156111375760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b03861660009081526020819052604081208683039055600180548792906111669084906116f2565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988787876040516111b4939291906116a5565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600082601f830112611215578081fd5b813567ffffffffffffffff808211156112305761123061175a565b604051601f8301601f19908116603f011681019082821181831017156112585761125861175a565b81604052838152866020858801011115611270578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561129d578081fd5b813561085681611770565b6000602082840312156112b9578081fd5b815161085681611770565b600080604083850312156112d6578081fd5b82356112e181611770565b915060208301356112f181611770565b809150509250929050565b600080600060608486031215611310578081fd5b833561131b81611770565b9250602084013561132b81611770565b929592945050506040919091013590565b600080600080600060a08688031215611353578081fd5b853561135e81611770565b9450602086013561136e81611770565b935060408601359250606086013567ffffffffffffffff80821115611391578283fd5b61139d89838a01611205565b935060808801359150808211156113b2578283fd5b506113bf88828901611205565b9150509295509295909350565b600080604083850312156113de578182fd5b82356113e981611770565b946020939093013593505050565b60008060006060848603121561140b578283fd5b833561141681611770565b925060208401359150604084013567ffffffffffffffff811115611438578182fd5b61144486828701611205565b9150509250925092565b60008060008060808587031215611463578384fd5b843561146e81611770565b935060208501359250604085013567ffffffffffffffff80821115611491578384fd5b61149d88838901611205565b935060608701359150808211156114b2578283fd5b506114bf87828801611205565b91505092959194509250565b600080604083850312156114dd578182fd5b82359150602083013567ffffffffffffffff8111156114fa578182fd5b61150685828601611205565b9150509250929050565b60008151808452815b8181101561153557602081850181015186830182015201611519565b818111156115465782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009061159690830185611510565b82810360a08401526115a88185611510565b9998505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115f65783516001600160a01b0316835292840192918401916001016115d1565b50909695505050505050565b6000602082526108566020830184611510565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000848252606060208301526116be6060830185611510565b82810360408401526116d08185611510565b9695505050505050565b600082198211156116ed576116ed611744565b500190565b60008282101561170457611704611744565b500390565b600181811c9082168061171d57607f821691505b6020821081141561173e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461178557600080fd5b5056fea26469706673582212201a15f30582c1c2cae8afa9ee88da8054d80910589d2bceba7a29b9ab512e1e0f64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57610116565b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857610116565b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157610116565b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b60405161013091906115b5565b60405180910390f35b610141610312565b6040516101309190611602565b61016161015c3660046113cc565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b6101616101913660046112fc565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba36600461133c565b61057c565b005b6101756101cf36600461128c565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f836600461128c565b6105b8565b6101416106d6565b6101bf6102133660046113f7565b6106e5565b6101616102263660046113cc565b610708565b6101616102393660046112c4565b6107bb565b61017561024c3660046112c4565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf61028536600461128c565b61085d565b6101bf61029836600461144e565b610979565b6101bf6102ab3660046114cb565b6109b1565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b60606002805461032190611709565b80601f016020809104026020016040519081016040528092919081815260200182805461034d90611709565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856109d6565b5060019392505050565b60006001600160a01b0383166103e45760405162461bcd60e51b81526004016103db90611615565b60405180910390fd5b6001600160a01b0384166104495760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b60648201526084016103db565b600033905061047a818686866040518060200160405280600081525060405180602001604052806000815250610afd565b6104a6818686866040518060200160405280600081525060405180602001604052806000815250610c34565b6001600160a01b038086166000908152600860209081526040808320938516835292905220548381101561052e5760405162461bcd60e51b815260206004820152602960248201527f4552433737373a207472616e7366657220616d6f756e74206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016103db565b610542868361053d87856116f2565b6109d6565b6105708287878760405180602001604052806000815250604051806020016040528060008152506000610d9a565b50600195945050505050565b61058633866107bb565b6105a25760405162461bcd60e51b81526004016103db90611659565b6105b185858585856001610f6e565b5050505050565b336001600160a01b038216141561061d5760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff161561066e573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff1916905561069d565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b60606003805461032190611709565b61070333848484604051806020016040528060008152506001610f6e565b505050565b60006001600160a01b0383166107305760405162461bcd60e51b81526004016103db90611615565b6000339050610761818286866040518060200160405280600081525060405180602001604052806000815250610afd565b61078d818286866040518060200160405280600081525060405180602001604052806000815250610c34565b6103a98182868660405180602001604052806000815250604051806020016040528060008152506000610d9a565b6000816001600160a01b0316836001600160a01b0316148061082657506001600160a01b03831660009081526005602052604090205460ff16801561082657506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061085657506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b6001600160a01b0381163314156108c05760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b60648201526084016103db565b6001600160a01b03811660009081526005602052604090205460ff1615610914573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610940565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61098333856107bb565b61099f5760405162461bcd60e51b81526004016103db90611659565b6109ab84848484611051565b50505050565b6109cc33838360405180602001604052806000815250611051565b5050565b3b151590565b6001600160a01b038316610a3a5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016103db565b6001600160a01b038216610a9c5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b60648201526084016103db565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610b7957600080fd5b505afa158015610b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bb191906112a8565b90506001600160a01b03811615610c2b57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610bf8908a908a908a908a908a908a9060040161155b565b600060405180830381600087803b158015610c1257600080fd5b505af1158015610c26573d6000803e3d6000fd5b505050505b50505050505050565b6001600160a01b03851660009081526020819052604090205483811015610cad5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b60648201526084016103db565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610ce49084906116da565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610d3c939291906116a5565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610d8991815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca9060440160206040518083038186803b158015610e1657600080fd5b505afa158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4e91906112a8565b90506001600160a01b03811615610eca576040516223de2960e01b81526001600160a01b038216906223de2990610e93908b908b908b908b908b908b9060040161155b565b600060405180830381600087803b158015610ead57600080fd5b505af1158015610ec1573d6000803e3d6000fd5b50505050610f64565b8115610f64576001600160a01b0386163b15610f645760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a4016103db565b5050505050505050565b6001600160a01b038616610fcf5760405162461bcd60e51b815260206004820152602260248201527f4552433737373a2073656e642066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b6001600160a01b0385166110255760405162461bcd60e51b815260206004820181905260248201527f4552433737373a2073656e6420746f20746865207a65726f206164647265737360448201526064016103db565b33611034818888888888610afd565b611042818888888888610c34565b610c2b81888888888888610d9a565b6001600160a01b0384166110b25760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b60648201526084016103db565b336110c281866000878787610afd565b6001600160a01b038516600090815260208190526040902054848110156111375760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b60648201526084016103db565b6001600160a01b03861660009081526020819052604081208683039055600180548792906111669084906116f2565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a40988787876040516111b4939291906116a5565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b600082601f830112611215578081fd5b813567ffffffffffffffff808211156112305761123061175a565b604051601f8301601f19908116603f011681019082821181831017156112585761125861175a565b81604052838152866020858801011115611270578485fd5b8360208701602083013792830160200193909352509392505050565b60006020828403121561129d578081fd5b813561085681611770565b6000602082840312156112b9578081fd5b815161085681611770565b600080604083850312156112d6578081fd5b82356112e181611770565b915060208301356112f181611770565b809150509250929050565b600080600060608486031215611310578081fd5b833561131b81611770565b9250602084013561132b81611770565b929592945050506040919091013590565b600080600080600060a08688031215611353578081fd5b853561135e81611770565b9450602086013561136e81611770565b935060408601359250606086013567ffffffffffffffff80821115611391578283fd5b61139d89838a01611205565b935060808801359150808211156113b2578283fd5b506113bf88828901611205565b9150509295509295909350565b600080604083850312156113de578182fd5b82356113e981611770565b946020939093013593505050565b60008060006060848603121561140b578283fd5b833561141681611770565b925060208401359150604084013567ffffffffffffffff811115611438578182fd5b61144486828701611205565b9150509250925092565b60008060008060808587031215611463578384fd5b843561146e81611770565b935060208501359250604085013567ffffffffffffffff80821115611491578384fd5b61149d88838901611205565b935060608701359150808211156114b2578283fd5b506114bf87828801611205565b91505092959194509250565b600080604083850312156114dd578182fd5b82359150602083013567ffffffffffffffff8111156114fa578182fd5b61150685828601611205565b9150509250929050565b60008151808452815b8181101561153557602081850181015186830182015201611519565b818111156115465782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009061159690830185611510565b82810360a08401526115a88185611510565b9998505050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156115f65783516001600160a01b0316835292840192918401916001016115d1565b50909695505050505050565b6000602082526108566020830184611510565b60208082526024908201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646040820152637265737360e01b606082015260800190565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b6000848252606060208301526116be6060830185611510565b82810360408401526116d08185611510565b9695505050505050565b600082198211156116ed576116ed611744565b500190565b60008282101561170457611704611744565b500390565b600181811c9082168061171d57607f821691505b6020821081141561173e57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461178557600080fd5b5056fea26469706673582212201a15f30582c1c2cae8afa9ee88da8054d80910589d2bceba7a29b9ab512e1e0f64736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b506040516200209d3803806200209d8339810160408190526200003491620007b9565b84848482600290805190602001906200004f929190620005b2565b50815162000065906003906020850190620005b2565b5080516200007b90600490602084019062000641565b5060005b8151811015620000eb57600160056000848481518110620000a457620000a4620008dc565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580620000e28162000908565b9150506200007f565b506040516329965a1d60e01b815230600482018190527fac7fbab5f54a3ca8194167523c6753bfeb96a445279294b6125b68cce217705460248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad24906329965a1d90606401600060405180830381600087803b1580156200016657600080fd5b505af11580156200017b573d6000803e3d6000fd5b50506040516329965a1d60e01b815230600482018190527faea199e31a596269b42cdafd93407f14436db6e4cad65417994c2eb37381e05a60248301526044820152731820a4b7618bde71dce8cdc73aab6c95905fad2492506329965a1d9150606401600060405180830381600087803b158015620001f957600080fd5b505af11580156200020e573d6000803e3d6000fd5b5050505050505062000247818360405180602001604052806000815250604051806020016040528060008152506200025260201b60201c565b505050505062000a65565b6200026284848484600162000268565b50505050565b6001600160a01b038516620002c45760405162461bcd60e51b815260206004820181905260248201527f4552433737373a206d696e7420746f20746865207a65726f206164647265737360448201526064015b60405180910390fd5b60003390508460016000828254620002dd919062000924565b90915550506001600160a01b038616600090815260208190526040812080548792906200030c90849062000924565b909155506200032490508160008888888888620003be565b856001600160a01b0316816001600160a01b03167f2fe5be0146f74c5bce36c0b80911af6c7d86ff27e89d5cfa61fc681327954e5d8787876040516200036d939291906200096d565b60405180910390a36040518581526001600160a01b038716906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa15801562000440573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004669190620009a6565b90506001600160a01b03811615620004e8576040516223de2960e01b81526001600160a01b038216906223de2990620004ae908b908b908b908b908b908b90600401620009cb565b600060405180830381600087803b158015620004c957600080fd5b505af1158015620004de573d6000803e3d6000fd5b5050505062000599565b811562000599576200050e866001600160a01b0316620005a360201b620007d91760201c565b15620005995760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a401620002bb565b5050505050505050565b6001600160a01b03163b151590565b828054620005c09062000a29565b90600052602060002090601f016020900481019282620005e457600085556200062f565b82601f10620005ff57805160ff19168380011785556200062f565b828001600101855582156200062f579182015b828111156200062f57825182559160200191906001019062000612565b506200063d92915062000699565b5090565b8280548282559060005260206000209081019282156200062f579160200282015b828111156200062f57825182546001600160a01b0319166001600160a01b0390911617825560209092019160019091019062000662565b5b808211156200063d57600081556001016200069a565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715620006f157620006f1620006b0565b604052919050565b60005b8381101562000716578181015183820152602001620006fc565b83811115620002625750506000910152565b600082601f8301126200073a57600080fd5b81516001600160401b03811115620007565762000756620006b0565b6200076b601f8201601f1916602001620006c6565b8181528460208386010111156200078157600080fd5b62000794826020830160208701620006f9565b949350505050565b80516001600160a01b0381168114620007b457600080fd5b919050565b600080600080600060a08688031215620007d257600080fd5b85516001600160401b0380821115620007ea57600080fd5b620007f889838a0162000728565b96506020915081880151818111156200081057600080fd5b6200081e8a828b0162000728565b9650506040880151818111156200083457600080fd5b8801601f81018a136200084657600080fd5b8051828111156200085b576200085b620006b0565b8060051b92506200086e848401620006c6565b818152928201840192848101908c8511156200088957600080fd5b928501925b84841015620008b257620008a2846200079c565b825292850192908501906200088e565b80985050505050505060608601519150620008d0608087016200079c565b90509295509295909350565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200091d576200091d620008f2565b5060010190565b600082198211156200093a576200093a620008f2565b500190565b6000815180845262000959816020860160208601620006f9565b601f01601f19169290920160200192915050565b8381526060602082015260006200098860608301856200093f565b82810360408401526200099c81856200093f565b9695505050505050565b600060208284031215620009b957600080fd5b620009c4826200079c565b9392505050565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c06080820181905260009062000a08908301856200093f565b82810360a084015262000a1c81856200093f565b9998505050505050505050565b600181811c9082168062000a3e57607f821691505b60208210810362000a5f57634e487b7160e01b600052602260045260246000fd5b50919050565b6116288062000a756000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b604051610130919061109d565b60405180910390f35b610141610312565b6040516101309190611137565b61016161015c366004611162565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461118e565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611272565b6103f9565b005b6101756101cf366004611305565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611305565b61043e565b61014161055b565b6101bf610213366004611322565b61056a565b610161610226366004611162565b61058d565b61016161023936600461137b565b6105c5565b61017561024c36600461137b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611305565b610667565b6101bf6102983660046113b4565b610782565b6101bf6102ab366004611434565b6107ba565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061147b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061147b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107e8565b5060019392505050565b6000336103c185828561090f565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099b565b506001949350505050565b61040333866105c5565b6104285760405162461bcd60e51b815260040161041f906114b5565b60405180910390fd5b6104378585858585600161099b565b5050505050565b6001600160a01b03811633036104a25760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f3573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610522565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061147b565b6105883384848460405180602001604052806000815250600161099b565b505050565b60006105bc3384846040518060200160405280600081525060405180602001604052806000815250600061099b565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063057506001600160a01b03831660009081526005602052604090205460ff16801561063057506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066057506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b038216036106c95760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071d573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610749565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078c33856105c5565b6107a85760405162461bcd60e51b815260040161041f906114b5565b6107b484848484610a97565b50505050565b6107d533838360405180602001604052806000815250610a97565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084c5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108ae5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b4578181101561098e5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b484848484036107e8565b6001600160a01b038616610a005760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a625760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a71818888888888610c4b565b610a7f818888888888610d72565b610a8e81888888888888610ed8565b50505050505050565b6001600160a01b038416610af85760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0881866000878787610c4b565b6001600160a01b03851660009081526020819052604090205484811015610b7d5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bac908490611517565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfa9392919061152e565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf09190611563565b90506001600160a01b03811615610a8e57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d37908a908a908a908a908a908a90600401611580565b600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610deb5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e229084906115da565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7a9392919061152e565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec791815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190611563565b90506001600160a01b03811615610ff9576040516223de2960e01b81526001600160a01b038216906223de2990610fc2908b908b908b908b908b908b90600401611580565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050611093565b8115611093576001600160a01b0386163b156110935760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110de5783516001600160a01b0316835292840192918401916001016110b9565b50909695505050505050565b6000815180845260005b81811015611110576020818501810151868301820152016110f4565b81811115611122576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066060208301846110ea565b6001600160a01b038116811461115f57600080fd5b50565b6000806040838503121561117557600080fd5b82356111808161114a565b946020939093013593505050565b6000806000606084860312156111a357600080fd5b83356111ae8161114a565b925060208401356111be8161114a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126111f657600080fd5b813567ffffffffffffffff80821115611211576112116111cf565b604051601f8301601f19908116603f01168101908282118183101715611239576112396111cf565b8160405283815286602085880101111561125257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561128a57600080fd5b85356112958161114a565b945060208601356112a58161114a565b935060408601359250606086013567ffffffffffffffff808211156112c957600080fd5b6112d589838a016111e5565b935060808801359150808211156112eb57600080fd5b506112f8888289016111e5565b9150509295509295909350565b60006020828403121561131757600080fd5b81356106608161114a565b60008060006060848603121561133757600080fd5b83356113428161114a565b925060208401359150604084013567ffffffffffffffff81111561136557600080fd5b611371868287016111e5565b9150509250925092565b6000806040838503121561138e57600080fd5b82356113998161114a565b915060208301356113a98161114a565b809150509250929050565b600080600080608085870312156113ca57600080fd5b84356113d58161114a565b935060208501359250604085013567ffffffffffffffff808211156113f957600080fd5b611405888389016111e5565b9350606087013591508082111561141b57600080fd5b50611428878288016111e5565b91505092959194509250565b6000806040838503121561144757600080fd5b82359150602083013567ffffffffffffffff81111561146557600080fd5b611471858286016111e5565b9150509250929050565b600181811c9082168061148f57607f821691505b6020821081036114af57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561152957611529611501565b500390565b83815260606020820152600061154760608301856110ea565b828103604084015261155981856110ea565b9695505050505050565b60006020828403121561157557600080fd5b81516106608161114a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115bb908301856110ea565b82810360a08401526115cd81856110ea565b9998505050505050505050565b600082198211156115ed576115ed611501565b50019056fea2646970667358221220cef610267830be9674d9c250b18a1c4398cd7518ce3f493e45edfe801b0f623064736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063959b8c3f116100a2578063d95b637111610071578063d95b63711461022b578063dd62ed3e1461023e578063fad8b32a14610277578063fc673c4f1461028a578063fe9d93031461029d57600080fd5b8063959b8c3f146101ea57806395d89b41146101fd5780639bd9bbc614610205578063a9059cbb1461021857600080fd5b806323b872dd116100e957806323b872dd14610183578063313ce56714610196578063556f0dc7146101a557806362ad1b83146101ac57806370a08231146101c157600080fd5b806306e485381461011b57806306fdde0314610139578063095ea7b31461014e57806318160ddd14610171575b600080fd5b6101236102b0565b604051610130919061109d565b60405180910390f35b610141610312565b6040516101309190611137565b61016161015c366004611162565b61039b565b6040519015158152602001610130565b6001545b604051908152602001610130565b61016161019136600461118e565b6103b3565b60405160128152602001610130565b6001610175565b6101bf6101ba366004611272565b6103f9565b005b6101756101cf366004611305565b6001600160a01b031660009081526020819052604090205490565b6101bf6101f8366004611305565b61043e565b61014161055b565b6101bf610213366004611322565b61056a565b610161610226366004611162565b61058d565b61016161023936600461137b565b6105c5565b61017561024c36600461137b565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b6101bf610285366004611305565b610667565b6101bf6102983660046113b4565b610782565b6101bf6102ab366004611434565b6107ba565b6060600480548060200260200160405190810160405280929190818152602001828054801561030857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116102ea575b5050505050905090565b6060600280546103219061147b565b80601f016020809104026020016040519081016040528092919081815260200182805461034d9061147b565b80156103085780601f1061036f57610100808354040283529160200191610308565b820191906000526020600020905b81548152906001019060200180831161037d57509395945050505050565b6000336103a98185856107e8565b5060019392505050565b6000336103c185828561090f565b6103ee8585856040518060200160405280600081525060405180602001604052806000815250600061099b565b506001949350505050565b61040333866105c5565b6104285760405162461bcd60e51b815260040161041f906114b5565b60405180910390fd5b6104378585858585600161099b565b5050505050565b6001600160a01b03811633036104a25760405162461bcd60e51b8152602060048201526024808201527f4552433737373a20617574686f72697a696e672073656c66206173206f70657260448201526330ba37b960e11b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff16156104f3573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19169055610522565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191660011790555b60405133906001600160a01b038316907ff4caeb2d6ca8932a215a353d0703c326ec2d81fc68170f320eb2ab49e9df61f990600090a350565b6060600380546103219061147b565b6105883384848460405180602001604052806000815250600161099b565b505050565b60006105bc3384846040518060200160405280600081525060405180602001604052806000815250600061099b565b50600192915050565b6000816001600160a01b0316836001600160a01b0316148061063057506001600160a01b03831660009081526005602052604090205460ff16801561063057506001600160a01b0380831660009081526007602090815260408083209387168352929052205460ff16155b8061066057506001600160a01b0380831660009081526006602090815260408083209387168352929052205460ff165b9392505050565b336001600160a01b038216036106c95760405162461bcd60e51b815260206004820152602160248201527f4552433737373a207265766f6b696e672073656c66206173206f70657261746f6044820152603960f91b606482015260840161041f565b6001600160a01b03811660009081526005602052604090205460ff161561071d573360009081526007602090815260408083206001600160a01b03851684529091529020805460ff19166001179055610749565b3360009081526006602090815260408083206001600160a01b03851684529091529020805460ff191690555b60405133906001600160a01b038316907f50546e66e5f44d728365dc3908c63bc5cfeeab470722c1677e3073a6ac294aa190600090a350565b61078c33856105c5565b6107a85760405162461bcd60e51b815260040161041f906114b5565b6107b484848484610a97565b50505050565b6107d533838360405180602001604052806000815250610a97565b5050565b6001600160a01b03163b151590565b6001600160a01b03831661084c5760405162461bcd60e51b815260206004820152602560248201527f4552433737373a20617070726f76652066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161041f565b6001600160a01b0382166108ae5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a20617070726f766520746f20746865207a65726f206164647260448201526265737360e81b606482015260840161041f565b6001600160a01b0383811660008181526008602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383811660009081526008602090815260408083209386168352929052205460001981146107b4578181101561098e5760405162461bcd60e51b815260206004820152601e60248201527f4552433737373a20696e73756666696369656e7420616c6c6f77616e63650000604482015260640161041f565b6107b484848484036107e8565b6001600160a01b038616610a005760405162461bcd60e51b815260206004820152602660248201527f4552433737373a207472616e736665722066726f6d20746865207a65726f206160448201526564647265737360d01b606482015260840161041f565b6001600160a01b038516610a625760405162461bcd60e51b8152602060048201526024808201527f4552433737373a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161041f565b33610a71818888888888610c4b565b610a7f818888888888610d72565b610a8e81888888888888610ed8565b50505050505050565b6001600160a01b038416610af85760405162461bcd60e51b815260206004820152602260248201527f4552433737373a206275726e2066726f6d20746865207a65726f206164647265604482015261737360f01b606482015260840161041f565b33610b0881866000878787610c4b565b6001600160a01b03851660009081526020819052604090205484811015610b7d5760405162461bcd60e51b815260206004820152602360248201527f4552433737373a206275726e20616d6f756e7420657863656564732062616c616044820152626e636560e81b606482015260840161041f565b6001600160a01b0386166000908152602081905260408120868303905560018054879290610bac908490611517565b92505081905550856001600160a01b0316826001600160a01b03167fa78a9be3a7b862d26933ad85fb11d80ef66b8f972d7cbba06621d583943a4098878787604051610bfa9392919061152e565b60405180910390a36040518581526000906001600160a01b038816907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a3505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527f29ddb589b1fb5fc7cf394961c1adf5f8c6454761adf795e67fe149f658abe8956024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610ccc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cf09190611563565b90506001600160a01b03811615610a8e57604051633ad5cbc160e11b81526001600160a01b038216906375ab978290610d37908a908a908a908a908a908a90600401611580565b600060405180830381600087803b158015610d5157600080fd5b505af1158015610d65573d6000803e3d6000fd5b5050505050505050505050565b6001600160a01b03851660009081526020819052604090205483811015610deb5760405162461bcd60e51b815260206004820152602760248201527f4552433737373a207472616e7366657220616d6f756e7420657863656564732060448201526662616c616e636560c81b606482015260840161041f565b6001600160a01b03808716600090815260208190526040808220878503905591871681529081208054869290610e229084906115da565b92505081905550846001600160a01b0316866001600160a01b0316886001600160a01b03167f06b541ddaa720db2b10a4d0cdac39b8d360425fc073085fac19bc82614677987878787604051610e7a9392919061152e565b60405180910390a4846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef86604051610ec791815260200190565b60405180910390a350505050505050565b60405163555ddc6560e11b81526001600160a01b03861660048201527fb281fc8c12954d22544db45de3159a39272895b169a852b314f9cc762e44c53b6024820152600090731820a4b7618bde71dce8cdc73aab6c95905fad249063aabbb8ca90604401602060405180830381865afa158015610f59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7d9190611563565b90506001600160a01b03811615610ff9576040516223de2960e01b81526001600160a01b038216906223de2990610fc2908b908b908b908b908b908b90600401611580565b600060405180830381600087803b158015610fdc57600080fd5b505af1158015610ff0573d6000803e3d6000fd5b50505050611093565b8115611093576001600160a01b0386163b156110935760405162461bcd60e51b815260206004820152604d60248201527f4552433737373a20746f6b656e20726563697069656e7420636f6e747261637460448201527f20686173206e6f20696d706c656d656e74657220666f7220455243373737546f60648201526c1ad95b9cd49958da5c1a595b9d609a1b608482015260a40161041f565b5050505050505050565b6020808252825182820181905260009190848201906040850190845b818110156110de5783516001600160a01b0316835292840192918401916001016110b9565b50909695505050505050565b6000815180845260005b81811015611110576020818501810151868301820152016110f4565b81811115611122576000602083870101525b50601f01601f19169290920160200192915050565b60208152600061066060208301846110ea565b6001600160a01b038116811461115f57600080fd5b50565b6000806040838503121561117557600080fd5b82356111808161114a565b946020939093013593505050565b6000806000606084860312156111a357600080fd5b83356111ae8161114a565b925060208401356111be8161114a565b929592945050506040919091013590565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126111f657600080fd5b813567ffffffffffffffff80821115611211576112116111cf565b604051601f8301601f19908116603f01168101908282118183101715611239576112396111cf565b8160405283815286602085880101111561125257600080fd5b836020870160208301376000602085830101528094505050505092915050565b600080600080600060a0868803121561128a57600080fd5b85356112958161114a565b945060208601356112a58161114a565b935060408601359250606086013567ffffffffffffffff808211156112c957600080fd5b6112d589838a016111e5565b935060808801359150808211156112eb57600080fd5b506112f8888289016111e5565b9150509295509295909350565b60006020828403121561131757600080fd5b81356106608161114a565b60008060006060848603121561133757600080fd5b83356113428161114a565b925060208401359150604084013567ffffffffffffffff81111561136557600080fd5b611371868287016111e5565b9150509250925092565b6000806040838503121561138e57600080fd5b82356113998161114a565b915060208301356113a98161114a565b809150509250929050565b600080600080608085870312156113ca57600080fd5b84356113d58161114a565b935060208501359250604085013567ffffffffffffffff808211156113f957600080fd5b611405888389016111e5565b9350606087013591508082111561141b57600080fd5b50611428878288016111e5565b91505092959194509250565b6000806040838503121561144757600080fd5b82359150602083013567ffffffffffffffff81111561146557600080fd5b611471858286016111e5565b9150509250929050565b600181811c9082168061148f57607f821691505b6020821081036114af57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252602c908201527f4552433737373a2063616c6c6572206973206e6f7420616e206f70657261746f60408201526b39103337b9103437b63232b960a11b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008282101561152957611529611501565b500390565b83815260606020820152600061154760608301856110ea565b828103604084015261155981856110ea565b9695505050505050565b60006020828403121561157557600080fd5b81516106608161114a565b6001600160a01b0387811682528681166020830152851660408201526060810184905260c0608082018190526000906115bb908301856110ea565b82810360a08401526115cd81856110ea565b9998505050505050505050565b600082198211156115ed576115ed611501565b50019056fea2646970667358221220cef610267830be9674d9c250b18a1c4398cd7518ce3f493e45edfe801b0f623064736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -142,6 +142,6 @@ {

],
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6105718061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a6100753660046104aa565b610135565b005b34801561008857600080fd5b5061007a6101d7565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d93660046104aa565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d3660046104aa565b61020d565b61007a6101303660046104aa565b6102a8565b6000546001600160a01b031633146101685760405162461bcd60e51b815260040161015f906104cd565b60405180910390fd5b6001600160a01b0381166000818152600160205260408120805491905590610190908261033c565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101cb91815260200190565b60405180910390a25050565b6000546001600160a01b031633146102015760405162461bcd60e51b815260040161015f906104cd565b61020b600061045a565b565b6000546001600160a01b031633146102375760405162461bcd60e51b815260040161015f906104cd565b6001600160a01b03811661029c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015f565b6102a58161045a565b50565b6000546001600160a01b031633146102d25760405162461bcd60e51b815260040161015f906104cd565b6001600160a01b0381166000908152600160205260408120805434928392916102fc908490610502565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101cb565b8047101561038c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161015f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b50509050806104555760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161015f565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156104bb578081fd5b81356104c681610526565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561052157634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b03811681146102a557600080fdfea2646970667358221220963ba588c44196bd2f1b9d659088ed7827bf93cce5c9d11a4f9989b02bed0a4564736f6c63430008030033",
"deployedBytecode": "0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a6100753660046104aa565b610135565b005b34801561008857600080fd5b5061007a6101d7565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d93660046104aa565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d3660046104aa565b61020d565b61007a6101303660046104aa565b6102a8565b6000546001600160a01b031633146101685760405162461bcd60e51b815260040161015f906104cd565b60405180910390fd5b6001600160a01b0381166000818152600160205260408120805491905590610190908261033c565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101cb91815260200190565b60405180910390a25050565b6000546001600160a01b031633146102015760405162461bcd60e51b815260040161015f906104cd565b61020b600061045a565b565b6000546001600160a01b031633146102375760405162461bcd60e51b815260040161015f906104cd565b6001600160a01b03811661029c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161015f565b6102a58161045a565b50565b6000546001600160a01b031633146102d25760405162461bcd60e51b815260040161015f906104cd565b6001600160a01b0381166000908152600160205260408120805434928392916102fc908490610502565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101cb565b8047101561038c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161015f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103d9576040519150601f19603f3d011682016040523d82523d6000602084013e6103de565b606091505b50509050806104555760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161015f565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156104bb578081fd5b81356104c681610526565b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6000821982111561052157634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b03811681146102a557600080fdfea2646970667358221220963ba588c44196bd2f1b9d659088ed7827bf93cce5c9d11a4f9989b02bed0a4564736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050d8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220dc6c34bc3335960c9e91e6de838a4426b5dd5d59951e1c89f8b6f5d95bf262a364736f6c634300080d0033",
"deployedBytecode": "0x6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b600082198211156104d257634e487b7160e01b600052601160045260246000fd5b50019056fea2646970667358221220dc6c34bc3335960c9e91e6de838a4426b5dd5d59951e1c89f8b6f5d95bf262a364736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -134,2 +161,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -149,2 +219,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -158,9 +241,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -257,2 +387,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -298,3 +567,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -317,3 +586,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -389,3 +687,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -414,2 +824,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -477,3 +906,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -496,3 +925,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -499,0 +951,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -153,2 +180,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -168,2 +238,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -181,2 +264,15 @@ "outputs": [

{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [

@@ -197,3 +293,37 @@ {

{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -290,2 +420,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -419,3 +688,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -438,3 +707,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -510,3 +808,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -554,2 +964,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -767,3 +1196,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -799,3 +1228,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -802,0 +1254,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -134,2 +161,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -149,2 +219,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -162,5 +245,52 @@ "outputs": [

{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -257,2 +387,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -298,3 +567,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -317,3 +586,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -389,3 +687,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -414,2 +824,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -506,3 +935,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -525,3 +954,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -528,0 +980,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -134,2 +161,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -149,2 +219,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -158,9 +241,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -257,2 +387,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -298,3 +567,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -317,3 +586,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -389,3 +687,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -414,2 +824,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -477,3 +906,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -496,3 +925,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -499,0 +951,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -156,4 +183,47 @@ },

{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint256",
"name": "oldVotingDelay",

@@ -206,2 +276,15 @@ "type": "uint256"

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -215,9 +298,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -314,2 +444,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -355,3 +624,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -374,3 +643,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -446,3 +744,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -471,2 +881,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -534,3 +963,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -553,3 +982,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "newProposalThreshold",

@@ -556,0 +1008,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -172,2 +199,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -187,2 +257,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -196,3 +279,3 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"

@@ -202,2 +285,15 @@ },

"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "__acceptAdmin",

@@ -211,3 +307,37 @@ "outputs": [],

{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -304,2 +434,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -345,3 +614,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -364,3 +633,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -436,3 +734,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -480,2 +890,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -577,3 +1006,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -596,3 +1025,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -599,0 +1051,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -172,2 +199,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -187,2 +257,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -196,9 +279,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -295,2 +425,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -336,3 +605,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -355,3 +624,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -427,3 +725,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -471,2 +881,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -568,3 +997,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -587,3 +1016,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -590,0 +1042,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -134,2 +161,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -149,2 +219,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -158,9 +241,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -257,2 +387,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -298,3 +567,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -317,3 +586,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -389,3 +687,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -414,2 +824,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -477,3 +906,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -496,3 +925,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -537,3 +989,3 @@ "type": "uint256"

{
"internalType": "contract ERC20Votes",
"internalType": "contract IERC5805",
"name": "",

@@ -540,0 +992,0 @@ "type": "address"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -134,2 +161,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -149,2 +219,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -158,9 +241,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -257,2 +387,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -298,3 +567,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -317,3 +586,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -389,3 +687,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -414,2 +824,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -477,3 +906,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -496,3 +925,26 @@ }

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -499,0 +951,0 @@ "type": "uint256"

@@ -7,3 +7,30 @@ {

{
"inputs": [],
"name": "Empty",
"type": "error"
},
{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [

@@ -62,3 +89,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -69,3 +96,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -153,2 +180,45 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],

@@ -168,2 +238,15 @@ "name": "BALLOT_TYPEHASH",

"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -177,9 +260,56 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "EXTENDED_BALLOT_TYPEHASH",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -276,2 +406,141 @@ "type": "uint256"

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -317,3 +586,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -336,3 +605,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -408,3 +706,115 @@ "type": "uint256"

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -433,2 +843,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -496,3 +925,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -526,2 +955,21 @@ }

{
"inputs": [
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
}
],
"name": "quorumNumerator",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],

@@ -542,3 +990,26 @@ "name": "quorumNumerator",

{
"internalType": "address",
"name": "target",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "relay",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -583,3 +1054,3 @@ "type": "uint256"

{
"internalType": "contract ERC20Votes",
"internalType": "contract IERC5805",
"name": "",

@@ -586,0 +1057,0 @@ "type": "address"

{
"_format": "hh-sol-artifact-1",
"contractName": "ICompoundTimelock",
"sourceName": "contracts/governance/extensions/GovernorTimelockCompound.sol",
"sourceName": "contracts/vendor/compound/ICompoundTimelock.sol",
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "signature",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "CancelTransaction",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "signature",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "ExecuteTransaction",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "NewAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "newDelay",
"type": "uint256"
}
],
"name": "NewDelay",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "newPendingAdmin",
"type": "address"
}
],
"name": "NewPendingAdmin",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "txHash",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "target",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "signature",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "data",
"type": "bytes"
},
{
"indexed": false,
"internalType": "uint256",
"name": "eta",
"type": "uint256"
}
],
"name": "QueueTransaction",
"type": "event"
},
{
"inputs": [],

@@ -8,0 +176,0 @@ "name": "GRACE_PERIOD",

@@ -113,3 +113,3 @@ {

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -138,3 +138,3 @@ }

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -214,3 +214,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -244,3 +244,3 @@ },

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -269,3 +269,3 @@ }

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -294,3 +294,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -300,3 +300,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -335,3 +335,3 @@ },

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -370,3 +370,3 @@ },

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -373,0 +373,0 @@ }

@@ -20,3 +20,3 @@ {

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -23,0 +23,0 @@ },

@@ -15,3 +15,3 @@ {

"internalType": "uint256",
"name": "value",
"name": "amount",
"type": "uint256"

@@ -18,0 +18,0 @@ },

@@ -140,3 +140,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -165,3 +165,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -171,3 +171,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -174,0 +174,0 @@ },

@@ -179,3 +179,3 @@ {

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -204,3 +204,3 @@ },

"internalType": "address",
"name": "sender",
"name": "from",
"type": "address"

@@ -210,3 +210,3 @@ },

"internalType": "address",
"name": "recipient",
"name": "to",
"type": "address"

@@ -213,0 +213,0 @@ },

{
"_format": "hh-sol-artifact-1",
"contractName": "IERC20Permit",
"sourceName": "contracts/token/ERC20/extensions/draft-IERC20Permit.sol",
"sourceName": "contracts/token/ERC20/extensions/IERC20Permit.sol",
"abi": [

@@ -6,0 +6,0 @@ {

{
"_format": "hh-sol-artifact-1",
"contractName": "IERC2612",
"sourceName": "contracts/interfaces/draft-IERC2612.sol",
"sourceName": "contracts/interfaces/IERC2612.sol",
"abi": [

@@ -6,0 +6,0 @@ {

@@ -240,3 +240,3 @@ {

"internalType": "bool",
"name": "_approved",
"name": "approved",
"type": "bool"

@@ -243,0 +243,0 @@ }

@@ -240,3 +240,3 @@ {

"internalType": "bool",
"name": "_approved",
"name": "approved",
"type": "bool"

@@ -305,3 +305,3 @@ }

"internalType": "uint256",
"name": "tokenId",
"name": "",
"type": "uint256"

@@ -308,0 +308,0 @@ }

@@ -253,3 +253,3 @@ {

"internalType": "bool",
"name": "_approved",
"name": "approved",
"type": "bool"

@@ -256,0 +256,0 @@ }

@@ -61,3 +61,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -68,3 +68,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -133,3 +133,59 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -143,3 +199,3 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"

@@ -150,5 +206,39 @@ },

{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},

@@ -243,2 +333,98 @@ {

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -284,3 +470,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -303,3 +489,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -399,2 +614,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -449,3 +683,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -452,0 +686,0 @@ }

@@ -61,3 +61,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -68,3 +68,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -133,3 +133,59 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -143,3 +199,3 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"

@@ -163,5 +219,39 @@ },

{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},

@@ -256,2 +346,98 @@ {

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -385,3 +571,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -404,3 +590,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -500,2 +715,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -666,3 +900,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -669,0 +903,0 @@ }

@@ -61,3 +61,3 @@ {

"internalType": "uint256",
"name": "startBlock",
"name": "voteStart",
"type": "uint256"

@@ -68,3 +68,3 @@ },

"internalType": "uint256",
"name": "endBlock",
"name": "voteEnd",
"type": "uint256"

@@ -152,3 +152,59 @@ },

{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "voter",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"indexed": false,
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "weight",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"indexed": false,
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "VoteCastWithParams",
"type": "event"
},
{
"inputs": [],
"name": "CLOCK_MODE",
"outputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "COUNTING_MODE",

@@ -162,3 +218,3 @@ "outputs": [

],
"stateMutability": "pure",
"stateMutability": "view",
"type": "function"

@@ -169,5 +225,39 @@ },

{
"internalType": "address[]",
"name": "targets",
"type": "address[]"
},
{
"internalType": "uint256[]",
"name": "values",
"type": "uint256[]"
},
{
"internalType": "bytes[]",
"name": "calldatas",
"type": "bytes[]"
},
{
"internalType": "bytes32",
"name": "descriptionHash",
"type": "bytes32"
}
],
"name": "cancel",
"outputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},

@@ -262,2 +352,98 @@ {

{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "castVoteWithReasonAndParams",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
},
{
"internalType": "uint8",
"name": "support",
"type": "uint8"
},
{
"internalType": "string",
"name": "reason",
"type": "string"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
}
],
"name": "castVoteWithReasonAndParamsBySig",
"outputs": [
{
"internalType": "uint256",
"name": "balance",
"type": "uint256"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "clock",
"outputs": [
{
"internalType": "uint48",
"name": "",
"type": "uint48"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",

@@ -303,3 +489,3 @@ "name": "targets",

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -322,3 +508,32 @@ }

{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "uint256",
"name": "timepoint",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"name": "getVotesWithParams",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",

@@ -437,2 +652,21 @@ "type": "uint256"

],
"name": "proposalProposer",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "proposalId",
"type": "uint256"
}
],
"name": "proposalSnapshot",

@@ -521,3 +755,3 @@ "outputs": [

"internalType": "uint256",
"name": "blockNumber",
"name": "timepoint",
"type": "uint256"

@@ -524,0 +758,0 @@ }

@@ -5,3 +5,17 @@ {

"sourceName": "contracts/proxy/utils/Initializable.sol",
"abi": [],
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "uint8",
"name": "version",
"type": "uint8"
}
],
"name": "Initialized",
"type": "event"
}
],
"bytecode": "0x",

@@ -8,0 +22,0 @@ "deployedBytecode": "0x",

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f9a5fb8f213e5fb86da121ed5ebb748edd1959e7dc81bff286857a5fd81916d64736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203f9a5fb8f213e5fb86da121ed5ebb748edd1959e7dc81bff286857a5fd81916d64736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3421fb69c380795c0236420a50209dc26fa39d309540fbc9f7eaed7c161e7a764736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a3421fb69c380795c0236420a50209dc26fa39d309540fbc9f7eaed7c161e7a764736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f123395a5502d60bcca2adc86d94de35f3cbf4d49514a32144f42800ab60539164736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220f123395a5502d60bcca2adc86d94de35f3cbf4d49514a32144f42800ab60539164736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a94e470524bbd013c9bcfe4535aa142bdd779f30162512fd7f3d146ae17d01e64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203a94e470524bbd013c9bcfe4535aa142bdd779f30162512fd7f3d146ae17d01e64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -12,4 +12,69 @@ {

{
"inputs": [],
"name": "InvalidShortString",
"type": "error"
},
{
"inputs": [
{
"internalType": "string",
"name": "str",
"type": "string"
}
],
"name": "StringTooLong",
"type": "error"
},
{
"anonymous": false,
"inputs": [],
"name": "EIP712DomainChanged",
"type": "event"
},
{
"inputs": [],
"name": "eip712Domain",
"outputs": [
{
"internalType": "bytes1",
"name": "fields",
"type": "bytes1"
},
{
"internalType": "string",
"name": "name",
"type": "string"
},
{
"internalType": "string",
"name": "version",
"type": "string"
},
{
"internalType": "uint256",
"name": "chainId",
"type": "uint256"
},
{
"internalType": "address",
"name": "verifyingContract",
"type": "address"
},
{
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
},
{
"internalType": "uint256[]",
"name": "extensions",
"type": "uint256[]"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [

@@ -149,6 +214,6 @@ {

],
"bytecode": "0x61014060405234801561001157600080fd5b50604080518082018252601081526f26b4b734b6b0b62337b93bb0b93232b960811b602080830191825283518085019094526005845264302e302e3160d81b908401528151902060e08190527fae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc1991638118856101008190524660a0529192917f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6100fb8184846040805160208101859052908101839052606081018290524660808201523060a082015260009060c0016040516020818303038152906040528051906020012090509392505050565b6080523060601b60c052610120525061011392505050565b60805160a05160c05160601c60e0516101005161012051610b786101656000396000610502015260006105510152600061052c01526000610483015260006104ad015260006104d70152610b786000f3fe6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f610054366004610932565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b610095610090366004610960565b6100d3565b604051610079929190610a4d565b3480156100af57600080fd5b506100c36100be366004610960565b610280565b6040519015158152602001610079565b600060606100e2858585610280565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d60808601356001610ace565b60008061016d6020890189610932565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a79190610932565b6001600160a01b0316606088013560408901356101c760a08b018b610a89565b6101d460208d018d610932565b6040516020016101e693929190610a08565b60408051601f198184030181529082905261020091610a31565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610af2565b5a1161027457634e487b7160e01b600052600160045260246000fd5b90969095509350505050565b60008061039384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038d92507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102f0905060208a018a610932565b61030060408b0160208c01610932565b60408b013560608c013560808d013561031c60a08f018f610a89565b60405161032a9291906109f8565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103fe565b90610452565b905060808501356000806103aa6020890189610932565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103f557506103e06020860186610932565b6001600160a01b0316816001600160a01b0316145b95945050505050565b600061044c61040b610476565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061046185856105a0565b9150915061046e81610610565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104cf57507f000000000000000000000000000000000000000000000000000000000000000046145b156104fb57507f000000000000000000000000000000000000000000000000000000000000000061059d565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c090920190925280519101205b90565b6000808251604114156105d75760208301516040840151606085015160001a6105cb87828585610816565b94509450505050610609565b82516040141561060157602083015160408401516105f6868383610903565b935093505050610609565b506000905060025b9250929050565b600081600481111561063257634e487b7160e01b600052602160045260246000fd5b141561063d57610813565b600181600481111561065f57634e487b7160e01b600052602160045260246000fd5b14156106ad5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b60028160048111156106cf57634e487b7160e01b600052602160045260246000fd5b141561071d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b600381600481111561073f57634e487b7160e01b600052602160045260246000fd5b14156107985760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b60048160048111156107ba57634e487b7160e01b600052602160045260246000fd5b14156108135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561084d57506000905060036108fa565b8460ff16601b1415801561086557508460ff16601c14155b1561087657506000905060046108fa565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156108ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108f3576000600192509250506108fa565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b0161092487828885610816565b935093505050935093915050565b600060208284031215610943578081fd5b81356001600160a01b0381168114610959578182fd5b9392505050565b600080600060408486031215610974578182fd5b833567ffffffffffffffff8082111561098b578384fd5b9085019060c0828803121561099e578384fd5b909350602085013590808211156109b3578384fd5b818601915086601f8301126109c6578384fd5b8135818111156109d4578485fd5b8760208285010111156109e5578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b6000838583375060609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a43818460208701610b12565b9190910192915050565b60008315158252604060208301528251806040840152610a74816060850160208701610b12565b601f01601f1916919091016060019392505050565b6000808335601e19843603018112610a9f578283fd5b83018035915067ffffffffffffffff821115610ab9578283fd5b60200191503681900382131561060957600080fd5b60008219821115610aed57634e487b7160e01b81526011600452602481fd5b500190565b600082610b0d57634e487b7160e01b81526012600452602481fd5b500490565b60005b83811015610b2d578181015183820152602001610b15565b83811115610b3c576000848401525b5050505056fea2646970667358221220023d728ef1dcc70f4c2a2f2c3100d3917ce7b697e1cd247acda92aa8742c42fc64736f6c63430008030033",
"deployedBytecode": "0x6080604052600436106100345760003560e01c80632d0335ab1461003957806347153f8214610082578063bf5d3bdb146100a3575b600080fd5b34801561004557600080fd5b5061006f610054366004610932565b6001600160a01b031660009081526020819052604090205490565b6040519081526020015b60405180910390f35b610095610090366004610960565b6100d3565b604051610079929190610a4d565b3480156100af57600080fd5b506100c36100be366004610960565b610280565b6040519015158152602001610079565b600060606100e2858585610280565b61014e5760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61015d60808601356001610ace565b60008061016d6020890189610932565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101a79190610932565b6001600160a01b0316606088013560408901356101c760a08b018b610a89565b6101d460208d018d610932565b6040516020016101e693929190610a08565b60408051601f198184030181529082905261020091610a31565b600060405180830381858888f193505050503d806000811461023e576040519150601f19603f3d011682016040523d82523d6000602084013e610243565b606091505b509092509050610258603f6060890135610af2565b5a1161027457634e487b7160e01b600052600160045260246000fd5b90969095509350505050565b60008061039384848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061038d92507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e4891506102f0905060208a018a610932565b61030060408b0160208c01610932565b60408b013560608c013560808d013561031c60a08f018f610a89565b60405161032a9291906109f8565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e081019190915261010001604051602081830303815290604052805190602001206103fe565b90610452565b905060808501356000806103aa6020890189610932565b6001600160a01b03166001600160a01b03168152602001908152602001600020541480156103f557506103e06020860186610932565b6001600160a01b0316816001600160a01b0316145b95945050505050565b600061044c61040b610476565b8360405161190160f01b6020820152602281018390526042810182905260009060620160405160208183030381529060405280519060200120905092915050565b92915050565b600080600061046185856105a0565b9150915061046e81610610565b509392505050565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156104cf57507f000000000000000000000000000000000000000000000000000000000000000046145b156104fb57507f000000000000000000000000000000000000000000000000000000000000000061059d565b50604080517f00000000000000000000000000000000000000000000000000000000000000006020808301919091527f0000000000000000000000000000000000000000000000000000000000000000828401527f000000000000000000000000000000000000000000000000000000000000000060608301524660808301523060a0808401919091528351808403909101815260c090920190925280519101205b90565b6000808251604114156105d75760208301516040840151606085015160001a6105cb87828585610816565b94509450505050610609565b82516040141561060157602083015160408401516105f6868383610903565b935093505050610609565b506000905060025b9250929050565b600081600481111561063257634e487b7160e01b600052602160045260246000fd5b141561063d57610813565b600181600481111561065f57634e487b7160e01b600052602160045260246000fd5b14156106ad5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610145565b60028160048111156106cf57634e487b7160e01b600052602160045260246000fd5b141561071d5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610145565b600381600481111561073f57634e487b7160e01b600052602160045260246000fd5b14156107985760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610145565b60048160048111156107ba57634e487b7160e01b600052602160045260246000fd5b14156108135760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610145565b50565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561084d57506000905060036108fa565b8460ff16601b1415801561086557508460ff16601c14155b1561087657506000905060046108fa565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156108ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166108f3576000600192509250506108fa565b9150600090505b94509492505050565b6000806001600160ff1b03831660ff84901c601b0161092487828885610816565b935093505050935093915050565b600060208284031215610943578081fd5b81356001600160a01b0381168114610959578182fd5b9392505050565b600080600060408486031215610974578182fd5b833567ffffffffffffffff8082111561098b578384fd5b9085019060c0828803121561099e578384fd5b909350602085013590808211156109b3578384fd5b818601915086601f8301126109c6578384fd5b8135818111156109d4578485fd5b8760208285010111156109e5578485fd5b6020830194508093505050509250925092565b6000828483379101908152919050565b6000838583375060609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610a43818460208701610b12565b9190910192915050565b60008315158252604060208301528251806040840152610a74816060850160208701610b12565b601f01601f1916919091016060019392505050565b6000808335601e19843603018112610a9f578283fd5b83018035915067ffffffffffffffff821115610ab9578283fd5b60200191503681900382131561060957600080fd5b60008219821115610aed57634e487b7160e01b81526011600452602481fd5b500190565b600082610b0d57634e487b7160e01b81526012600452602481fd5b500490565b60005b83811015610b2d578181015183820152602001610b15565b83811115610b3c576000848401525b5050505056fea2646970667358221220023d728ef1dcc70f4c2a2f2c3100d3917ce7b697e1cd247acda92aa8742c42fc64736f6c63430008030033",
"bytecode": "0x6101606040523480156200001257600080fd5b506040518060400160405280601081526020016f26b4b734b6b0b62337b93bb0b93232b960811b81525060405180604001604052806005815260200164302e302e3160d81b815250620000756000836200012f60201b620004a71790919060201c565b61012052620000928160016200012f602090811b620004a717901c565b61014052815160208084019190912060e052815190820120610100524660a0526200012060e05161010051604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201529081019290925260608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b60805250503060c0526200032e565b60006020835110156200014f57620001478362000183565b90506200017d565b826200016683620001cf60201b620004e01760201c565b8151620001779260200190620001d2565b5060ff90505b92915050565b600080829050601f81511115620001ba578260405163305a27a960e01b8152600401620001b1919062000278565b60405180910390fd5b8051620001c782620002d0565b179392505050565b90565b828054620001e090620002f8565b90600052602060002090601f0160209004810192826200020457600085556200024f565b82601f106200021f57805160ff19168380011785556200024f565b828001600101855582156200024f579182015b828111156200024f57825182559160200191906001019062000232565b506200025d92915062000261565b5090565b5b808211156200025d576000815560010162000262565b600060208083528351808285015260005b81811015620002a75785810183015185820160400152820162000289565b81811115620002ba576000604083870101525b50601f01601f1916929092016040019392505050565b80516020808301519190811015620002f2576000198160200360031b1b821691505b50919050565b600181811c908216806200030d57607f821691505b602082108103620002f257634e487b7160e01b600052602260045260246000fd5b60805160a05160c05160e051610100516101205161014051610e1e6200038960003960006102d8015260006102ae0152600061072f01526000610707015260006106620152600061068c015260006106b60152610e1e6000f3fe60806040526004361061003f5760003560e01c80632d0335ab1461004457806347153f821461008d57806384b0196e146100ae578063bf5d3bdb146100d6575b600080fd5b34801561005057600080fd5b5061007a61005f366004610a9c565b6001600160a01b031660009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100a061009b366004610acc565b610106565b604051610084929190610bc7565b3480156100ba57600080fd5b506100c36102a0565b6040516100849796959493929190610bea565b3480156100e257600080fd5b506100f66100f1366004610acc565b610328565b6040519015158152602001610084565b60006060610115858585610328565b6101815760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61019060808601356001610c80565b600260006101a16020890189610a9c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101db9190610a9c565b6001600160a01b0316606088013560408901356101fb60a08b018b610ca6565b61020860208d018d610a9c565b60405160200161021a93929190610ced565b60408051601f198184030181529082905261023491610d13565b600060405180830381858888f193505050503d8060008114610272576040519150601f19603f3d011682016040523d82523d6000602084013e610277565b606091505b50909250905061028c603f6060890135610d2f565b5a1161029457fe5b90969095509350505050565b6000606080828080836102d37f0000000000000000000000000000000000000000000000000000000000000000836104e3565b6102fe7f000000000000000000000000000000000000000000000000000000000000000060016104e3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60008061043b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061043592507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e489150610398905060208a018a610a9c565b6103a860408b0160208c01610a9c565b60408b013560608c013560808d01356103c460a08f018f610ca6565b6040516103d2929190610d51565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e08101919091526101000160405160208183030381529060405280519060200120610587565b906105b4565b90506080850135600260006104536020890189610a9c565b6001600160a01b03166001600160a01b031681526020019081526020016000205414801561049e57506104896020860186610a9c565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006020835110156104c3576104bc836105d8565b90506104da565b828281516104d49260200190610a03565b5060ff90505b92915050565b90565b606060ff83146104f6576104bc83610616565b81805461050290610d61565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90610d61565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b505050505090506104da565b60006104da610594610655565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006105c38585610785565b915091506105d0816107ca565b509392505050565b600080829050601f81511115610603578260405163305a27a960e01b81526004016101789190610d9b565b805161060e82610dae565b179392505050565b6060600061062383610917565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156106ae57507f000000000000000000000000000000000000000000000000000000000000000046145b156106d857507f000000000000000000000000000000000000000000000000000000000000000090565b610780604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b60008082516041036107bb5760208301516040840151606085015160001a6107af8782858561093f565b945094505050506107c3565b506000905060025b9250929050565b60008160048111156107de576107de610dd2565b036107e65750565b60018160048111156107fa576107fa610dd2565b036108475760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610178565b600281600481111561085b5761085b610dd2565b036108a85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610178565b60038160048111156108bc576108bc610dd2565b036109145760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610178565b50565b600060ff8216601f8111156104da57604051632cd44ac360e21b815260040160405180910390fd5b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561097657506000905060036109fa565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156109ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109f3576000600192509250506109fa565b9150600090505b94509492505050565b828054610a0f90610d61565b90600052602060002090601f016020900481019282610a315760008555610a77565b82601f10610a4a57805160ff1916838001178555610a77565b82800160010185558215610a77579182015b82811115610a77578251825591602001919060010190610a5c565b50610a83929150610a87565b5090565b5b80821115610a835760008155600101610a88565b600060208284031215610aae57600080fd5b81356001600160a01b0381168114610ac557600080fd5b9392505050565b600080600060408486031215610ae157600080fd5b833567ffffffffffffffff80821115610af957600080fd5b9085019060c08288031215610b0d57600080fd5b90935060208501359080821115610b2357600080fd5b818601915086601f830112610b3757600080fd5b813581811115610b4657600080fd5b876020828501011115610b5857600080fd5b6020830194508093505050509250925092565b60005b83811015610b86578181015183820152602001610b6e565b83811115610b95576000848401525b50505050565b60008151808452610bb3816020860160208601610b6b565b601f01601f19169290920160200192915050565b8215158152604060208201526000610be26040830184610b9b565b949350505050565b60ff60f81b881681526000602060e081840152610c0a60e084018a610b9b565b8381036040850152610c1c818a610b9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015610c6e57835183529284019291840191600101610c52565b50909c9b505050505050505050505050565b60008219821115610ca157634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e19843603018112610cbd57600080fd5b83018035915067ffffffffffffffff821115610cd857600080fd5b6020019150368190038213156107c357600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610d25818460208701610b6b565b9190910192915050565b600082610d4c57634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b600181811c90821680610d7557607f821691505b602082108103610d9557634e487b7160e01b600052602260045260246000fd5b50919050565b602081526000610ac56020830184610b9b565b80516020808301519190811015610d955760001960209190910360031b1b16919050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212206fe5ed5ceb0154292fd4bec46d808cd37f1bb24363f695e1a84a3f4f9c71b78164736f6c634300080d0033",
"deployedBytecode": "0x60806040526004361061003f5760003560e01c80632d0335ab1461004457806347153f821461008d57806384b0196e146100ae578063bf5d3bdb146100d6575b600080fd5b34801561005057600080fd5b5061007a61005f366004610a9c565b6001600160a01b031660009081526002602052604090205490565b6040519081526020015b60405180910390f35b6100a061009b366004610acc565b610106565b604051610084929190610bc7565b3480156100ba57600080fd5b506100c36102a0565b6040516100849796959493929190610bea565b3480156100e257600080fd5b506100f66100f1366004610acc565b610328565b6040519015158152602001610084565b60006060610115858585610328565b6101815760405162461bcd60e51b815260206004820152603260248201527f4d696e696d616c466f727761726465723a207369676e617475726520646f6573604482015271081b9bdd081b585d18da081c995c5d595cdd60721b60648201526084015b60405180910390fd5b61019060808601356001610c80565b600260006101a16020890189610a9c565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000808660200160208101906101db9190610a9c565b6001600160a01b0316606088013560408901356101fb60a08b018b610ca6565b61020860208d018d610a9c565b60405160200161021a93929190610ced565b60408051601f198184030181529082905261023491610d13565b600060405180830381858888f193505050503d8060008114610272576040519150601f19603f3d011682016040523d82523d6000602084013e610277565b606091505b50909250905061028c603f6060890135610d2f565b5a1161029457fe5b90969095509350505050565b6000606080828080836102d37f0000000000000000000000000000000000000000000000000000000000000000836104e3565b6102fe7f000000000000000000000000000000000000000000000000000000000000000060016104e3565b60408051600080825260208201909252600f60f81b9b939a50919850469750309650945092509050565b60008061043b84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061043592507fdd8f4b70b0f4393e889bd39128a30628a78b61816a9eb8199759e7a349657e489150610398905060208a018a610a9c565b6103a860408b0160208c01610a9c565b60408b013560608c013560808d01356103c460a08f018f610ca6565b6040516103d2929190610d51565b6040805191829003822060208301989098526001600160a01b0396871690820152949093166060850152608084019190915260a083015260c082015260e08101919091526101000160405160208183030381529060405280519060200120610587565b906105b4565b90506080850135600260006104536020890189610a9c565b6001600160a01b03166001600160a01b031681526020019081526020016000205414801561049e57506104896020860186610a9c565b6001600160a01b0316816001600160a01b0316145b95945050505050565b60006020835110156104c3576104bc836105d8565b90506104da565b828281516104d49260200190610a03565b5060ff90505b92915050565b90565b606060ff83146104f6576104bc83610616565b81805461050290610d61565b80601f016020809104026020016040519081016040528092919081815260200182805461052e90610d61565b801561057b5780601f106105505761010080835404028352916020019161057b565b820191906000526020600020905b81548152906001019060200180831161055e57829003601f168201915b505050505090506104da565b60006104da610594610655565b8360405161190160f01b8152600281019290925260228201526042902090565b60008060006105c38585610785565b915091506105d0816107ca565b509392505050565b600080829050601f81511115610603578260405163305a27a960e01b81526004016101789190610d9b565b805161060e82610dae565b179392505050565b6060600061062383610917565b604080516020808252818301909252919250600091906020820181803683375050509182525060208101929092525090565b6000306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480156106ae57507f000000000000000000000000000000000000000000000000000000000000000046145b156106d857507f000000000000000000000000000000000000000000000000000000000000000090565b610780604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f0000000000000000000000000000000000000000000000000000000000000000918101919091527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260009060c00160405160208183030381529060405280519060200120905090565b905090565b60008082516041036107bb5760208301516040840151606085015160001a6107af8782858561093f565b945094505050506107c3565b506000905060025b9250929050565b60008160048111156107de576107de610dd2565b036107e65750565b60018160048111156107fa576107fa610dd2565b036108475760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610178565b600281600481111561085b5761085b610dd2565b036108a85760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610178565b60038160048111156108bc576108bc610dd2565b036109145760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610178565b50565b600060ff8216601f8111156104da57604051632cd44ac360e21b815260040160405180910390fd5b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083111561097657506000905060036109fa565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156109ca573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166109f3576000600192509250506109fa565b9150600090505b94509492505050565b828054610a0f90610d61565b90600052602060002090601f016020900481019282610a315760008555610a77565b82601f10610a4a57805160ff1916838001178555610a77565b82800160010185558215610a77579182015b82811115610a77578251825591602001919060010190610a5c565b50610a83929150610a87565b5090565b5b80821115610a835760008155600101610a88565b600060208284031215610aae57600080fd5b81356001600160a01b0381168114610ac557600080fd5b9392505050565b600080600060408486031215610ae157600080fd5b833567ffffffffffffffff80821115610af957600080fd5b9085019060c08288031215610b0d57600080fd5b90935060208501359080821115610b2357600080fd5b818601915086601f830112610b3757600080fd5b813581811115610b4657600080fd5b876020828501011115610b5857600080fd5b6020830194508093505050509250925092565b60005b83811015610b86578181015183820152602001610b6e565b83811115610b95576000848401525b50505050565b60008151808452610bb3816020860160208601610b6b565b601f01601f19169290920160200192915050565b8215158152604060208201526000610be26040830184610b9b565b949350505050565b60ff60f81b881681526000602060e081840152610c0a60e084018a610b9b565b8381036040850152610c1c818a610b9b565b606085018990526001600160a01b038816608086015260a0850187905284810360c0860152855180825283870192509083019060005b81811015610c6e57835183529284019291840191600101610c52565b50909c9b505050505050505050505050565b60008219821115610ca157634e487b7160e01b600052601160045260246000fd5b500190565b6000808335601e19843603018112610cbd57600080fd5b83018035915067ffffffffffffffff821115610cd857600080fd5b6020019150368190038213156107c357600080fd5b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251610d25818460208701610b6b565b9190910192915050565b600082610d4c57634e487b7160e01b600052601260045260246000fd5b500490565b8183823760009101908152919050565b600181811c90821680610d7557607f821691505b602082108103610d9557634e487b7160e01b600052602260045260246000fd5b50919050565b602081526000610ac56020830184610b9b565b80516020808301519190811015610d955760001960209190910360031b1b16919050565b634e487b7160e01b600052602160045260246000fdfea26469706673582212206fe5ed5ceb0154292fd4bec46d808cd37f1bb24363f695e1a84a3f4f9c71b78164736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -126,2 +126,45 @@ {

{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "contract IERC20",
"name": "token",
"type": "address"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address payable",

@@ -267,6 +310,6 @@ "name": "account",

],
"bytecode": "0x608060405260405162001157380380620011578339810160408190526200002691620003db565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200016f576200015a8382815181106200011d57634e487b7160e01b600052603260045260246000fd5b60200260200101518383815181106200014657634e487b7160e01b600052603260045260246000fd5b60200260200101516200017860201b60201c565b8062000166816200052c565b915050620000ee565b50505062000576565b6001600160a01b038216620001e55760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b60008111620002375760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b03821660009081526002602052604090205415620002b35760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200031b90829062000511565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b600082601f83011262000375578081fd5b815160206200038e6200038883620004eb565b620004b8565b80838252828201915082860187848660051b8901011115620003ae578586fd5b855b85811015620003ce57815184529284019290840190600101620003b0565b5090979650505050505050565b60008060408385031215620003ee578182fd5b82516001600160401b038082111562000405578384fd5b818501915085601f83011262000419578384fd5b815160206200042c6200038883620004eb565b8083825282820191508286018a848660051b89010111156200044c578889fd5b8896505b84871015620004855780516001600160a01b03811681146200047057898afd5b83526001969096019591830191830162000450565b50918801519196509093505050808211156200049f578283fd5b50620004ae8582860162000364565b9150509250929050565b604051601f8201601f191681016001600160401b0381118282101715620004e357620004e362000560565b604052919050565b60006001600160401b0382111562000507576200050762000560565b5060051b60200190565b600082198211156200052757620005276200054a565b500190565b60006000198214156200054357620005436200054a565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b610bd180620005866000396000f3fe60806040526004361061008a5760003560e01c80638b83209b116100595780638b83209b146101845780639852595c146101bc578063ce7c2ac2146101f2578063d79779b214610228578063e33b7de31461025e576100d3565b806319165587146100d85780633a98ef39146100fa578063406072a91461011e57806348b7504414610164576100d3565b366100d3577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100e457600080fd5b506100f86100f336600461094b565b610273565b005b34801561010657600080fd5b506000545b6040519081526020015b60405180910390f35b34801561012a57600080fd5b5061010b610139366004610987565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561017057600080fd5b506100f861017f366004610987565b6103aa565b34801561019057600080fd5b506101a461019f3660046109bf565b610592565b6040516001600160a01b039091168152602001610115565b3480156101c857600080fd5b5061010b6101d736600461094b565b6001600160a01b031660009081526003602052604090205490565b3480156101fe57600080fd5b5061010b61020d36600461094b565b6001600160a01b031660009081526002602052604090205490565b34801561023457600080fd5b5061010b61024336600461094b565b6001600160a01b031660009081526005602052604090205490565b34801561026a57600080fd5b5060015461010b565b6001600160a01b0381166000908152600260205260409020546102b15760405162461bcd60e51b81526004016102a890610a3e565b60405180910390fd5b60006102bc60015490565b6102c69047610acf565b905060006102f383836102ee866001600160a01b031660009081526003602052604090205490565b6105d0565b9050806103125760405162461bcd60e51b81526004016102a890610a84565b6001600160a01b0383166000908152600360205260408120805483929061033a908490610acf565b9250508190555080600160008282546103539190610acf565b9091555061036390508382610615565b604080516001600160a01b0385168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b6001600160a01b0381166000908152600260205260409020546103df5760405162461bcd60e51b81526004016102a890610a3e565b6001600160a01b0382166000908152600560205260408120546040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561043757600080fd5b505afa15801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f91906109d7565b6104799190610acf565b905060006104b283836102ee87876001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b9050806104d15760405162461bcd60e51b81526004016102a890610a84565b6001600160a01b03808516600090815260066020908152604080832093871683529290529081208054839290610508908490610acf565b90915550506001600160a01b03841660009081526005602052604081208054839290610535908490610acf565b909155506105469050848483610733565b604080516001600160a01b038581168252602082018490528616917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a250505050565b6000600482815481106105b557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b600080546001600160a01b0385168252600260205260408220548391906105f79086610b07565b6106019190610ae7565b61060b9190610b26565b90505b9392505050565b804710156106655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106b2576040519150601f19603f3d011682016040523d82523d6000602084013e6106b7565b606091505b505090508061072e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102a8565b505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261072e928692916000916107c3918516908490610840565b80519091501561072e57808060200190518101906107e19190610967565b61072e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a8565b606061060b848460008585843b6108995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a8565b600080866001600160a01b031685876040516108b591906109ef565b60006040518083038185875af1925050503d80600081146108f2576040519150601f19603f3d011682016040523d82523d6000602084013e6108f7565b606091505b5091509150610907828286610912565b979650505050505050565b6060831561092157508161060e565b8251156109315782518084602001fd5b8160405162461bcd60e51b81526004016102a89190610a0b565b60006020828403121561095c578081fd5b813561060e81610b83565b600060208284031215610978578081fd5b8151801515811461060e578182fd5b60008060408385031215610999578081fd5b82356109a481610b83565b915060208301356109b481610b83565b809150509250929050565b6000602082840312156109d0578081fd5b5035919050565b6000602082840312156109e8578081fd5b5051919050565b60008251610a01818460208701610b3d565b9190910192915050565b6000602082528251806020840152610a2a816040850160208701610b3d565b601f01601f19169190910160400192915050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b60008219821115610ae257610ae2610b6d565b500190565b600082610b0257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610b2157610b21610b6d565b500290565b600082821015610b3857610b38610b6d565b500390565b60005b83811015610b58578181015183820152602001610b40565b83811115610b67576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b9857600080fd5b5056fea26469706673582212200781872285af3cda6d143a796c380e00beeb4f0ff9fd6f5dd270e941ebc8589464736f6c63430008030033",
"deployedBytecode": "0x60806040526004361061008a5760003560e01c80638b83209b116100595780638b83209b146101845780639852595c146101bc578063ce7c2ac2146101f2578063d79779b214610228578063e33b7de31461025e576100d3565b806319165587146100d85780633a98ef39146100fa578063406072a91461011e57806348b7504414610164576100d3565b366100d3577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100e457600080fd5b506100f86100f336600461094b565b610273565b005b34801561010657600080fd5b506000545b6040519081526020015b60405180910390f35b34801561012a57600080fd5b5061010b610139366004610987565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561017057600080fd5b506100f861017f366004610987565b6103aa565b34801561019057600080fd5b506101a461019f3660046109bf565b610592565b6040516001600160a01b039091168152602001610115565b3480156101c857600080fd5b5061010b6101d736600461094b565b6001600160a01b031660009081526003602052604090205490565b3480156101fe57600080fd5b5061010b61020d36600461094b565b6001600160a01b031660009081526002602052604090205490565b34801561023457600080fd5b5061010b61024336600461094b565b6001600160a01b031660009081526005602052604090205490565b34801561026a57600080fd5b5060015461010b565b6001600160a01b0381166000908152600260205260409020546102b15760405162461bcd60e51b81526004016102a890610a3e565b60405180910390fd5b60006102bc60015490565b6102c69047610acf565b905060006102f383836102ee866001600160a01b031660009081526003602052604090205490565b6105d0565b9050806103125760405162461bcd60e51b81526004016102a890610a84565b6001600160a01b0383166000908152600360205260408120805483929061033a908490610acf565b9250508190555080600160008282546103539190610acf565b9091555061036390508382610615565b604080516001600160a01b0385168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a1505050565b6001600160a01b0381166000908152600260205260409020546103df5760405162461bcd60e51b81526004016102a890610a3e565b6001600160a01b0382166000908152600560205260408120546040516370a0823160e01b81523060048201526001600160a01b038516906370a082319060240160206040518083038186803b15801561043757600080fd5b505afa15801561044b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046f91906109d7565b6104799190610acf565b905060006104b283836102ee87876001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b9050806104d15760405162461bcd60e51b81526004016102a890610a84565b6001600160a01b03808516600090815260066020908152604080832093871683529290529081208054839290610508908490610acf565b90915550506001600160a01b03841660009081526005602052604081208054839290610535908490610acf565b909155506105469050848483610733565b604080516001600160a01b038581168252602082018490528616917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a250505050565b6000600482815481106105b557634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b031692915050565b600080546001600160a01b0385168252600260205260408220548391906105f79086610b07565b6106019190610ae7565b61060b9190610b26565b90505b9392505050565b804710156106655760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102a8565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106b2576040519150601f19603f3d011682016040523d82523d6000602084013e6106b7565b606091505b505090508061072e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102a8565b505050565b604080516001600160a01b03848116602483015260448083018590528351808403909101815260649092018352602080830180516001600160e01b031663a9059cbb60e01b17905283518085019094528084527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65649084015261072e928692916000916107c3918516908490610840565b80519091501561072e57808060200190518101906107e19190610967565b61072e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102a8565b606061060b848460008585843b6108995760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102a8565b600080866001600160a01b031685876040516108b591906109ef565b60006040518083038185875af1925050503d80600081146108f2576040519150601f19603f3d011682016040523d82523d6000602084013e6108f7565b606091505b5091509150610907828286610912565b979650505050505050565b6060831561092157508161060e565b8251156109315782518084602001fd5b8160405162461bcd60e51b81526004016102a89190610a0b565b60006020828403121561095c578081fd5b813561060e81610b83565b600060208284031215610978578081fd5b8151801515811461060e578182fd5b60008060408385031215610999578081fd5b82356109a481610b83565b915060208301356109b481610b83565b809150509250929050565b6000602082840312156109d0578081fd5b5035919050565b6000602082840312156109e8578081fd5b5051919050565b60008251610a01818460208701610b3d565b9190910192915050565b6000602082528251806020840152610a2a816040850160208701610b3d565b601f01601f19169190910160400192915050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b60008219821115610ae257610ae2610b6d565b500190565b600082610b0257634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610b2157610b21610b6d565b500290565b600082821015610b3857610b38610b6d565b500390565b60005b83811015610b58578181015183820152602001610b40565b83811115610b67576000848401525b50505050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b0381168114610b9857600080fd5b5056fea26469706673582212200781872285af3cda6d143a796c380e00beeb4f0ff9fd6f5dd270e941ebc8589464736f6c63430008030033",
"bytecode": "0x6080604052604051620011d3380380620011d383398101604081905262000026916200042e565b8051825114620000985760405162461bcd60e51b815260206004820152603260248201527f5061796d656e7453706c69747465723a2070617965657320616e6420736861726044820152710cae640d8cadccee8d040dad2e6dac2e8c6d60731b60648201526084015b60405180910390fd5b6000825111620000eb5760405162461bcd60e51b815260206004820152601a60248201527f5061796d656e7453706c69747465723a206e6f2070617965657300000000000060448201526064016200008f565b60005b82518110156200015757620001428382815181106200011157620001116200050c565b60200260200101518383815181106200012e576200012e6200050c565b60200260200101516200016060201b60201c565b806200014e8162000538565b915050620000ee565b5050506200056f565b6001600160a01b038216620001cd5760405162461bcd60e51b815260206004820152602c60248201527f5061796d656e7453706c69747465723a206163636f756e74206973207468652060448201526b7a65726f206164647265737360a01b60648201526084016200008f565b600081116200021f5760405162461bcd60e51b815260206004820152601d60248201527f5061796d656e7453706c69747465723a2073686172657320617265203000000060448201526064016200008f565b6001600160a01b038216600090815260026020526040902054156200029b5760405162461bcd60e51b815260206004820152602b60248201527f5061796d656e7453706c69747465723a206163636f756e7420616c726561647960448201526a206861732073686172657360a81b60648201526084016200008f565b60048054600181019091557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b0180546001600160a01b0319166001600160a01b0384169081179091556000908152600260205260408120829055546200030390829062000554565b600055604080516001600160a01b0384168152602081018390527f40c340f65e17194d14ddddb073d3c9f888e3cb52b5aae0c6c7706b4fbc905fac910160405180910390a15050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156200038d576200038d6200034c565b604052919050565b60006001600160401b03821115620003b157620003b16200034c565b5060051b60200190565b600082601f830112620003cd57600080fd5b81516020620003e6620003e08362000395565b62000362565b82815260059290921b840181019181810190868411156200040657600080fd5b8286015b848110156200042357805183529183019183016200040a565b509695505050505050565b600080604083850312156200044257600080fd5b82516001600160401b03808211156200045a57600080fd5b818501915085601f8301126200046f57600080fd5b8151602062000482620003e08362000395565b82815260059290921b84018101918181019089841115620004a257600080fd5b948201945b83861015620004d95785516001600160a01b0381168114620004c95760008081fd5b82529482019490820190620004a7565b91880151919650909350505080821115620004f357600080fd5b506200050285828601620003bb565b9150509250929050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600182016200054d576200054d62000522565b5060010190565b600082198211156200056a576200056a62000522565b500190565b610c54806200057f6000396000f3fe6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109c8565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f3660046109e5565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e6101953660046109e5565b6103b9565b3480156101a657600080fd5b506101ba6101b5366004610a1e565b6104ca565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109c8565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109c8565b6104fa565b34801561023457600080fd5b506101216102433660046109e5565b610542565b34801561025457600080fd5b506101216102633660046109c8565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109c8565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a37565b60405180910390fd5b6000610312826104fa565b9050806000036103345760405162461bcd60e51b81526004016102fe90610a7d565b80600160008282546103469190610ade565b90915550506001600160a01b0382166000908152600360205260409020805482019055610373828261060d565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103ee5760405162461bcd60e51b81526004016102fe90610a37565b60006103fa8383610542565b90508060000361041c5760405162461bcd60e51b81526004016102fe90610a7d565b6001600160a01b03831660009081526005602052604081208054839290610444908490610ade565b90915550506001600160a01b03808416600090815260066020908152604080832093861683529290522080548201905561047f83838361072b565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104df576104df610af6565b6000918252602090912001546001600160a01b031692915050565b60008061050660015490565b6105109047610ade565b905061053b8382610536866001600160a01b031660009081526003602052604090205490565b61077d565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190610b0c565b6105cf9190610ade565b6001600160a01b03808616600090815260066020908152604080832093881683529290522054909150610605908490839061077d565b949350505050565b8047101561065d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106aa576040519150601f19603f3d011682016040523d82523d6000602084013e6106af565b606091505b50509050806107265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107269084906107b8565b600080546001600160a01b0385168252600260205260408220548391906107a49086610b25565b6107ae9190610b44565b6106059190610b66565b600061080d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661088d9092919063ffffffff16565b905080516000148061082e57508080602001905181019061082e9190610b7d565b6107265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b6060610605848460008585600080866001600160a01b031685876040516108b49190610bcf565b60006040518083038185875af1925050503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b509150915061090787838387610912565b979650505050505050565b6060831561098157825160000361097a576001600160a01b0385163b61097a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b5081610605565b61060583838151156109965781518083602001fd5b8060405162461bcd60e51b81526004016102fe9190610beb565b6001600160a01b03811681146109c557600080fd5b50565b6000602082840312156109da57600080fd5b813561053b816109b0565b600080604083850312156109f857600080fd5b8235610a03816109b0565b91506020830135610a13816109b0565b809150509250929050565b600060208284031215610a3057600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610af157610af1610ac8565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b1e57600080fd5b5051919050565b6000816000190483118215151615610b3f57610b3f610ac8565b500290565b600082610b6157634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b7857610b78610ac8565b500390565b600060208284031215610b8f57600080fd5b8151801515811461053b57600080fd5b60005b83811015610bba578181015183820152602001610ba2565b83811115610bc9576000848401525b50505050565b60008251610be1818460208701610b9f565b9190910192915050565b6020815260008251806020840152610c0a816040850160208701610b9f565b601f01601f1916919091016040019291505056fea264697066735822122050021b604a1fac3f1bd21a97db2afe0e620d8736a70c17c144da08ff8967e5dd64736f6c634300080d0033",
"deployedBytecode": "0x6080604052600436106100a05760003560e01c80639852595c116100645780639852595c146101d2578063a3f8eace14610208578063c45ac05014610228578063ce7c2ac214610248578063d79779b21461027e578063e33b7de3146102b457600080fd5b806319165587146100ee5780633a98ef3914610110578063406072a91461013457806348b750441461017a5780638b83209b1461019a57600080fd5b366100e9577f6ef95f06320e7a25a04a175ca677b7052bdd97131872c2192525a629f51be77033604080516001600160a01b0390921682523460208301520160405180910390a1005b600080fd5b3480156100fa57600080fd5b5061010e6101093660046109c8565b6102c9565b005b34801561011c57600080fd5b506000545b6040519081526020015b60405180910390f35b34801561014057600080fd5b5061012161014f3660046109e5565b6001600160a01b03918216600090815260066020908152604080832093909416825291909152205490565b34801561018657600080fd5b5061010e6101953660046109e5565b6103b9565b3480156101a657600080fd5b506101ba6101b5366004610a1e565b6104ca565b6040516001600160a01b03909116815260200161012b565b3480156101de57600080fd5b506101216101ed3660046109c8565b6001600160a01b031660009081526003602052604090205490565b34801561021457600080fd5b506101216102233660046109c8565b6104fa565b34801561023457600080fd5b506101216102433660046109e5565b610542565b34801561025457600080fd5b506101216102633660046109c8565b6001600160a01b031660009081526002602052604090205490565b34801561028a57600080fd5b506101216102993660046109c8565b6001600160a01b031660009081526005602052604090205490565b3480156102c057600080fd5b50600154610121565b6001600160a01b0381166000908152600260205260409020546103075760405162461bcd60e51b81526004016102fe90610a37565b60405180910390fd5b6000610312826104fa565b9050806000036103345760405162461bcd60e51b81526004016102fe90610a7d565b80600160008282546103469190610ade565b90915550506001600160a01b0382166000908152600360205260409020805482019055610373828261060d565b604080516001600160a01b0384168152602081018390527fdf20fd1e76bc69d672e4814fafb2c449bba3a5369d8359adf9e05e6fde87b056910160405180910390a15050565b6001600160a01b0381166000908152600260205260409020546103ee5760405162461bcd60e51b81526004016102fe90610a37565b60006103fa8383610542565b90508060000361041c5760405162461bcd60e51b81526004016102fe90610a7d565b6001600160a01b03831660009081526005602052604081208054839290610444908490610ade565b90915550506001600160a01b03808416600090815260066020908152604080832093861683529290522080548201905561047f83838361072b565b604080516001600160a01b038481168252602082018490528516917f3be5b7a71e84ed12875d241991c70855ac5817d847039e17a9d895c1ceb0f18a910160405180910390a2505050565b6000600482815481106104df576104df610af6565b6000918252602090912001546001600160a01b031692915050565b60008061050660015490565b6105109047610ade565b905061053b8382610536866001600160a01b031660009081526003602052604090205490565b61077d565b9392505050565b6001600160a01b03821660009081526005602052604081205481906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa1580156105a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105c59190610b0c565b6105cf9190610ade565b6001600160a01b03808616600090815260066020908152604080832093881683529290522054909150610605908490839061077d565b949350505050565b8047101561065d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102fe565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146106aa576040519150601f19603f3d011682016040523d82523d6000602084013e6106af565b606091505b50509050806107265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102fe565b505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107269084906107b8565b600080546001600160a01b0385168252600260205260408220548391906107a49086610b25565b6107ae9190610b44565b6106059190610b66565b600061080d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b031661088d9092919063ffffffff16565b905080516000148061082e57508080602001905181019061082e9190610b7d565b6107265760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016102fe565b6060610605848460008585600080866001600160a01b031685876040516108b49190610bcf565b60006040518083038185875af1925050503d80600081146108f1576040519150601f19603f3d011682016040523d82523d6000602084013e6108f6565b606091505b509150915061090787838387610912565b979650505050505050565b6060831561098157825160000361097a576001600160a01b0385163b61097a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102fe565b5081610605565b61060583838151156109965781518083602001fd5b8060405162461bcd60e51b81526004016102fe9190610beb565b6001600160a01b03811681146109c557600080fd5b50565b6000602082840312156109da57600080fd5b813561053b816109b0565b600080604083850312156109f857600080fd5b8235610a03816109b0565b91506020830135610a13816109b0565b809150509250929050565b600060208284031215610a3057600080fd5b5035919050565b60208082526026908201527f5061796d656e7453706c69747465723a206163636f756e7420686173206e6f2060408201526573686172657360d01b606082015260800190565b6020808252602b908201527f5061796d656e7453706c69747465723a206163636f756e74206973206e6f742060408201526a191d59481c185e5b595b9d60aa1b606082015260800190565b634e487b7160e01b600052601160045260246000fd5b60008219821115610af157610af1610ac8565b500190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215610b1e57600080fd5b5051919050565b6000816000190483118215151615610b3f57610b3f610ac8565b500290565b600082610b6157634e487b7160e01b600052601260045260246000fd5b500490565b600082821015610b7857610b78610ac8565b500390565b600060208284031215610b8f57600080fd5b8151801515811461053b57600080fd5b60005b83811015610bba578181015183820152602001610ba2565b83811115610bc9576000848401525b50505050565b60008251610be1818460208701610b9f565b9190910192915050565b6020815260008251806020840152610c0a816040850160208701610b9f565b601f01601f1916919091016040019291505056fea264697066735822122050021b604a1fac3f1bd21a97db2afe0e620d8736a70c17c144da08ff8967e5dd64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -28,3 +28,3 @@ {

{
"internalType": "contract TransparentUpgradeableProxy",
"internalType": "contract ITransparentUpgradeableProxy",
"name": "proxy",

@@ -47,3 +47,3 @@ "type": "address"

{
"internalType": "contract TransparentUpgradeableProxy",
"internalType": "contract ITransparentUpgradeableProxy",
"name": "proxy",

@@ -67,3 +67,3 @@ "type": "address"

{
"internalType": "contract TransparentUpgradeableProxy",
"internalType": "contract ITransparentUpgradeableProxy",
"name": "proxy",

@@ -120,3 +120,3 @@ "type": "address"

{
"internalType": "contract TransparentUpgradeableProxy",
"internalType": "contract ITransparentUpgradeableProxy",
"name": "proxy",

@@ -139,3 +139,3 @@ "type": "address"

{
"internalType": "contract TransparentUpgradeableProxy",
"internalType": "contract ITransparentUpgradeableProxy",
"name": "proxy",

@@ -161,6 +161,6 @@ "type": "address"

],
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6107198061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b3660046104d8565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610517565b610254565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461054f565b6102de565b34801561013057600080fd5b506100d161013f366004610517565b61036f565b34801561015057600080fd5b506100d161015f3660046104d8565b6103c7565b34801561017057600080fd5b506100a061017f3660046104d8565b610462565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906104fb565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f90610683565b60405180910390fd5b6102526000610488565b565b6000546001600160a01b0316331461027e5760405162461bcd60e51b815260040161023f90610683565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103085760405162461bcd60e51b815260040161023f90610683565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906103389086908690600401610620565b6000604051808303818588803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103995760405162461bcd60e51b815260040161023f90610683565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102a8565b6000546001600160a01b031633146103f15760405162461bcd60e51b815260040161023f90610683565b6001600160a01b0381166104565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b61045f81610488565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156104e9578081fd5b81356104f4816106ce565b9392505050565b60006020828403121561050c578081fd5b81516104f4816106ce565b60008060408385031215610529578081fd5b8235610534816106ce565b91506020830135610544816106ce565b809150509250929050565b600080600060608486031215610563578081fd5b833561056e816106ce565b9250602084013561057e816106ce565b9150604084013567ffffffffffffffff8082111561059a578283fd5b818601915086601f8301126105ad578283fd5b8135818111156105bf576105bf6106b8565b604051601f8201601f19908116603f011681019083821181831017156105e7576105e76106b8565b816040528281528960208487010111156105ff578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b8181101561065b5785810183015185820160600152820161063f565b8181111561066c5783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461045f57600080fdfea26469706673582212209be8f39aa1a9dcd75ee50645d6c5a6c6a03ecf17c0cc25eec82607f27237806364736f6c63430008030033",
"deployedBytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead146101645761007b565b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b3660046104d8565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee366004610517565b610254565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461054f565b6102de565b34801561013057600080fd5b506100d161013f366004610517565b61036f565b34801561015057600080fd5b506100d161015f3660046104d8565b6103c7565b34801561017057600080fd5b506100a061017f3660046104d8565b610462565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906104fb565b949350505050565b6000546001600160a01b031633146102485760405162461bcd60e51b815260040161023f90610683565b60405180910390fd5b6102526000610488565b565b6000546001600160a01b0316331461027e5760405162461bcd60e51b815260040161023f90610683565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b1580156102c257600080fd5b505af11580156102d6573d6000803e3d6000fd5b505050505050565b6000546001600160a01b031633146103085760405162461bcd60e51b815260040161023f90610683565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906103389086908690600401610620565b6000604051808303818588803b15801561035157600080fd5b505af1158015610365573d6000803e3d6000fd5b5050505050505050565b6000546001600160a01b031633146103995760405162461bcd60e51b815260040161023f90610683565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe6906024016102a8565b6000546001600160a01b031633146103f15760405162461bcd60e51b815260040161023f90610683565b6001600160a01b0381166104565760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161023f565b61045f81610488565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156104e9578081fd5b81356104f4816106ce565b9392505050565b60006020828403121561050c578081fd5b81516104f4816106ce565b60008060408385031215610529578081fd5b8235610534816106ce565b91506020830135610544816106ce565b809150509250929050565b600080600060608486031215610563578081fd5b833561056e816106ce565b9250602084013561057e816106ce565b9150604084013567ffffffffffffffff8082111561059a578283fd5b818601915086601f8301126105ad578283fd5b8135818111156105bf576105bf6106b8565b604051601f8201601f19908116603f011681019083821181831017156105e7576105e76106b8565b816040528281528960208487010111156105ff578586fd5b82602086016020830137856020848301015280955050505050509250925092565b600060018060a01b038416825260206040818401528351806040850152825b8181101561065b5785810183015185820160600152820161063f565b8181111561066c5783606083870101525b50601f01601f191692909201606001949350505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461045f57600080fdfea26469706673582212209be8f39aa1a9dcd75ee50645d6c5a6c6a03ecf17c0cc25eec82607f27237806364736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61069a8061007e6000396000f3fe60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220ba609cdc1acb4b31893a88830cb51f57e1dc322365ae5105c5710d07e3ba05ac64736f6c634300080d0033",
"deployedBytecode": "0x60806040526004361061007b5760003560e01c80639623609d1161004e5780639623609d1461011157806399a88ec414610124578063f2fde38b14610144578063f3b7dead1461016457600080fd5b8063204e1c7a14610080578063715018a6146100bc5780637eff275e146100d35780638da5cb5b146100f3575b600080fd5b34801561008c57600080fd5b506100a061009b366004610499565b610184565b6040516001600160a01b03909116815260200160405180910390f35b3480156100c857600080fd5b506100d1610215565b005b3480156100df57600080fd5b506100d16100ee3660046104bd565b610229565b3480156100ff57600080fd5b506000546001600160a01b03166100a0565b6100d161011f36600461050c565b610291565b34801561013057600080fd5b506100d161013f3660046104bd565b610300565b34801561015057600080fd5b506100d161015f366004610499565b610336565b34801561017057600080fd5b506100a061017f366004610499565b6103b4565b6000806000836001600160a01b03166040516101aa90635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101e5576040519150601f19603f3d011682016040523d82523d6000602084013e6101ea565b606091505b5091509150816101f957600080fd5b8080602001905181019061020d91906105e2565b949350505050565b61021d6103da565b6102276000610434565b565b6102316103da565b6040516308f2839760e41b81526001600160a01b038281166004830152831690638f283970906024015b600060405180830381600087803b15801561027557600080fd5b505af1158015610289573d6000803e3d6000fd5b505050505050565b6102996103da565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102c990869086906004016105ff565b6000604051808303818588803b1580156102e257600080fd5b505af11580156102f6573d6000803e3d6000fd5b5050505050505050565b6103086103da565b604051631b2ce7f360e11b81526001600160a01b038281166004830152831690633659cfe69060240161025b565b61033e6103da565b6001600160a01b0381166103a85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6103b181610434565b50565b6000806000836001600160a01b03166040516101aa906303e1469160e61b815260040190565b6000546001600160a01b031633146102275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161039f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b03811681146103b157600080fd5b6000602082840312156104ab57600080fd5b81356104b681610484565b9392505050565b600080604083850312156104d057600080fd5b82356104db81610484565b915060208301356104eb81610484565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561052157600080fd5b833561052c81610484565b9250602084013561053c81610484565b9150604084013567ffffffffffffffff8082111561055957600080fd5b818601915086601f83011261056d57600080fd5b81358181111561057f5761057f6104f6565b604051601f8201601f19908116603f011681019083821181831017156105a7576105a76104f6565b816040528281528960208487010111156105c057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f457600080fd5b81516104b681610484565b60018060a01b038316815260006020604081840152835180604085015260005b8181101561063b5785810183015185820160600152820161061f565b8181111561064d576000606083870101525b50601f01601f19169290920160600194935050505056fea2646970667358221220ba609cdc1acb4b31893a88830cb51f57e1dc322365ae5105c5710d07e3ba05ac64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -231,6 +231,6 @@ {

],
"bytecode": "0x60a060405234801561001057600080fd5b50604051610c17380380610c1783398101604081905261002f91610117565b610038336100c7565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b60601b6001600160601b0319166080526002805460ff19169055610145565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215610128578081fd5b81516001600160a01b038116811461013e578182fd5b9392505050565b60805160601c610aae6101696000396000818160bb01526105cf0152610aae6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa0114610240576100a7565b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a3660046109bf565b610349565b34801561013b57600080fd5b5061014f61014a3660046109bf565b6103c6565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103fc565b34801561018057600080fd5b5061010d610432565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610529565b3480156101c857600080fd5b5060025460ff166040516100ef91906109e2565b3480156101e857600080fd5b506102126101f73660046109bf565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b3660046109bf565b6105f5565b61010d61024e3660046109bf565b61068d565b6000546001600160a01b031633146102865760405162461bcd60e51b815260040161027d90610a0a565b60405180910390fd5b600061029460025460ff1690565b60028111156102b357634e487b7160e01b600052602160045260246000fd5b146103125760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b606482015260840161027d565b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b610352816103c6565b6103ba5760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b606482015260840161027d565b6103c381610724565b50565b600060016103d660025460ff1690565b60028111156103f557634e487b7160e01b600052602160045260246000fd5b1492915050565b6000546001600160a01b031633146104265760405162461bcd60e51b815260040161027d90610a0a565b61043060006107bd565b565b6000546001600160a01b0316331461045c5760405162461bcd60e51b815260040161027d90610a0a565b600061046a60025460ff1690565b600281111561048957634e487b7160e01b600052602160045260246000fd5b146104f15760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b606482015260840161027d565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561054f57634e487b7160e01b600052602160045260246000fd5b146105c25760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f7365640000000000000000606482015260840161027d565b6104306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761080d565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b0381166106845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161027d565b6103c3816107bd565b600061069b60025460ff1690565b60028111156106ba57634e487b7160e01b600052602160045260246000fd5b1461071b5760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b606482015260840161027d565b6103c38161092b565b6000546001600160a01b0316331461074e5760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b0381166000818152600160205260408120805491905590610776908261080d565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516107b191815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8047101561085d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161027d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108aa576040519150601f19603f3d011682016040523d82523d6000602084013e6108af565b606091505b50509050806109265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161027d565b505050565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b03811660009081526001602052604081208054349283929161097f908490610a3f565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016107b1565b6000602082840312156109d0578081fd5b81356109db81610a63565b9392505050565b6020810160038310610a0457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610a5e57634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b03811681146103c357600080fdfea2646970667358221220b09c16b7f1371d1f7f0019703a8621311b465cb6c2b54f0b315a90d20b4a957464736f6c63430008030033",
"deployedBytecode": "0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa0114610240576100a7565b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a3660046109bf565b610349565b34801561013b57600080fd5b5061014f61014a3660046109bf565b6103c6565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103fc565b34801561018057600080fd5b5061010d610432565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610529565b3480156101c857600080fd5b5060025460ff166040516100ef91906109e2565b3480156101e857600080fd5b506102126101f73660046109bf565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b3660046109bf565b6105f5565b61010d61024e3660046109bf565b61068d565b6000546001600160a01b031633146102865760405162461bcd60e51b815260040161027d90610a0a565b60405180910390fd5b600061029460025460ff1690565b60028111156102b357634e487b7160e01b600052602160045260246000fd5b146103125760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b606482015260840161027d565b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b610352816103c6565b6103ba5760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b606482015260840161027d565b6103c381610724565b50565b600060016103d660025460ff1690565b60028111156103f557634e487b7160e01b600052602160045260246000fd5b1492915050565b6000546001600160a01b031633146104265760405162461bcd60e51b815260040161027d90610a0a565b61043060006107bd565b565b6000546001600160a01b0316331461045c5760405162461bcd60e51b815260040161027d90610a0a565b600061046a60025460ff1690565b600281111561048957634e487b7160e01b600052602160045260246000fd5b146104f15760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b606482015260840161027d565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561054f57634e487b7160e01b600052602160045260246000fd5b146105c25760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f7365640000000000000000606482015260840161027d565b6104306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761080d565b6000546001600160a01b0316331461061f5760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b0381166106845760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161027d565b6103c3816107bd565b600061069b60025460ff1690565b60028111156106ba57634e487b7160e01b600052602160045260246000fd5b1461071b5760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b606482015260840161027d565b6103c38161092b565b6000546001600160a01b0316331461074e5760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b0381166000818152600160205260408120805491905590610776908261080d565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516107b191815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8047101561085d5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e6365000000604482015260640161027d565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146108aa576040519150601f19603f3d011682016040523d82523d6000602084013e6108af565b606091505b50509050806109265760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d61792068617665207265766572746564000000000000606482015260840161027d565b505050565b6000546001600160a01b031633146109555760405162461bcd60e51b815260040161027d90610a0a565b6001600160a01b03811660009081526001602052604081208054349283929161097f908490610a3f565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016107b1565b6000602082840312156109d0578081fd5b81356109db81610a63565b9392505050565b6020810160038310610a0457634e487b7160e01b600052602160045260246000fd5b91905290565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60008219821115610a5e57634e487b7160e01b81526011600452602481fd5b500190565b6001600160a01b03811681146103c357600080fdfea2646970667358221220b09c16b7f1371d1f7f0019703a8621311b465cb6c2b54f0b315a90d20b4a957464736f6c63430008030033",
"bytecode": "0x60a060405234801561001057600080fd5b50604051610b22380380610b2283398101604081905261002f91610113565b610038336100c3565b6001600160a01b0381166100a85760405162461bcd60e51b815260206004820152602d60248201527f526566756e64457363726f773a2062656e65666963696172792069732074686560448201526c207a65726f206164647265737360981b606482015260840160405180910390fd5b6001600160a01b03166080526002805460ff19169055610143565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561012557600080fd5b81516001600160a01b038116811461013c57600080fd5b9392505050565b6080516109be6101646000396000818160bb015261051b01526109be6000f3fe6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212208267ea71961568bda0999b5327794fce13d0cf08516c5f195e62b943718d305664736f6c634300080d0033",
"deployedBytecode": "0x6080604052600436106100a75760003560e01c80638da5cb5b116100645780638da5cb5b146101895780639af6549a146101a7578063c19d93fb146101bc578063e3a9db1a146101dc578063f2fde38b14610220578063f340fa011461024057600080fd5b806338af3eed146100ac57806343d726d6146100f857806351cff8d91461010f578063685ca1941461012f578063715018a61461015f5780638c52dc4114610174575b600080fd5b3480156100b857600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b34801561010457600080fd5b5061010d610253565b005b34801561011b57600080fd5b5061010d61012a366004610900565b61030f565b34801561013b57600080fd5b5061014f61014a366004610900565b61038c565b60405190151581526020016100ef565b34801561016b57600080fd5b5061010d6103ae565b34801561018057600080fd5b5061010d6103c2565b34801561019557600080fd5b506000546001600160a01b03166100db565b3480156101b357600080fd5b5061010d610483565b3480156101c857600080fd5b5060025460ff166040516100ef919061093a565b3480156101e857600080fd5b506102126101f7366004610900565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100ef565b34801561022c57600080fd5b5061010d61023b366004610900565b610541565b61010d61024e366004610900565b6105b7565b61025b61063a565b600060025460ff16600281111561027457610274610924565b146102d85760405162461bcd60e51b815260206004820152602960248201527f526566756e64457363726f773a2063616e206f6e6c7920636c6f7365207768696044820152686c652061637469766560b81b60648201526084015b60405180910390fd5b6002805460ff1916811790556040517f088672c3a6e342f7cd94a65ba63b79df24a8973927b4d05d803c44bbf787d12f90600090a1565b6103188161038c565b6103805760405162461bcd60e51b815260206004820152603360248201527f436f6e646974696f6e616c457363726f773a207061796565206973206e6f7420604482015272616c6c6f77656420746f20776974686472617760681b60648201526084016102cf565b61038981610694565b50565b6000600160025460ff1660028111156103a7576103a7610924565b1492915050565b6103b661063a565b6103c0600061070b565b565b6103ca61063a565b600060025460ff1660028111156103e3576103e3610924565b1461044b5760405162461bcd60e51b815260206004820152603260248201527f526566756e64457363726f773a2063616e206f6e6c7920656e61626c6520726560448201527166756e6473207768696c652061637469766560701b60648201526084016102cf565b6002805460ff191660011790556040517f599d8e5a83cffb867d051598c4d70e805d59802d8081c1c7d6dffc5b6aca2b8990600090a1565b6002805460ff16600281111561049b5761049b610924565b1461050e5760405162461bcd60e51b815260206004820152603860248201527f526566756e64457363726f773a2062656e65666963696172792063616e206f6e60448201527f6c79207769746864726177207768696c6520636c6f736564000000000000000060648201526084016102cf565b6103c06001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000164761075b565b61054961063a565b6001600160a01b0381166105ae5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016102cf565b6103898161070b565b600060025460ff1660028111156105d0576105d0610924565b146106315760405162461bcd60e51b815260206004820152602b60248201527f526566756e64457363726f773a2063616e206f6e6c79206465706f736974207760448201526a68696c652061637469766560a81b60648201526084016102cf565b61038981610879565b6000546001600160a01b031633146103c05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102cf565b61069c61063a565b6001600160a01b03811660008181526001602052604081208054919055906106c4908261075b565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516106ff91815260200190565b60405180910390a25050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b804710156107ab5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064016102cf565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146107f8576040519150601f19603f3d011682016040523d82523d6000602084013e6107fd565b606091505b50509050806108745760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016102cf565b505050565b61088161063a565b6001600160a01b0381166000908152600160205260408120805434928392916108ab908490610962565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016106ff565b6001600160a01b038116811461038957600080fd5b60006020828403121561091257600080fd5b813561091d816108eb565b9392505050565b634e487b7160e01b600052602160045260246000fd5b602081016003831061095c57634e487b7160e01b600052602160045260246000fd5b91905290565b6000821982111561098357634e487b7160e01b600052601160045260246000fd5b50019056fea26469706673582212208267ea71961568bda0999b5327794fce13d0cf08516c5f195e62b943718d305664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209591ee2e26e32959356b38c70ee6567e15bbcaae1645ea35837e2c65139d243164736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209591ee2e26e32959356b38c70ee6567e15bbcaae1645ea35837e2c65139d243164736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b70f13b9037ee79c19308444b56b249ba516d35f57eaf86c037b39c5bf00f0464736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209b70f13b9037ee79c19308444b56b249ba516d35f57eaf86c037b39c5bf00f0464736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220863d442f5559e767d5d1ccf01a68637d45984650c9e3e28612afddd13b61c40864736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220863d442f5559e767d5d1ccf01a68637d45984650c9e3e28612afddd13b61c40864736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037ed3f0899fce4cbd2f1b6c9084e70d4230c6e19fce896c9f381ef6a43865f8f64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122037ed3f0899fce4cbd2f1b6c9084e70d4230c6e19fce896c9f381ef6a43865f8f64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209fe0665b7db754ac7d3a21b2c8a7c3c0d3295bd2a58289fb2bcddf2806fb858e64736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209fe0665b7db754ac7d3a21b2c8a7c3c0d3295bd2a58289fb2bcddf2806fb858e64736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206bad85ec3f129e4a2d14c0ffec29b8707e9fa0d94b1f1866adbff6471def4ddb64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206bad85ec3f129e4a2d14c0ffec29b8707e9fa0d94b1f1866adbff6471def4ddb64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c29c267bd7a76630d50fb7a8db883dd68723d86c326b5662d228d4c6a7139f664736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207c29c267bd7a76630d50fb7a8db883dd68723d86c326b5662d228d4c6a7139f664736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220767b2d621e5661e0a91e7ef50e37dfb79311d08bd7d95516bfedb69ebb980e9a64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220767b2d621e5661e0a91e7ef50e37dfb79311d08bd7d95516bfedb69ebb980e9a64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea6eef75cbe2a91d7f6a9c9ef9c7c83c89754a3fd5f85aed2d93ed9be2b792e764736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ea6eef75cbe2a91d7f6a9c9ef9c7c83c89754a3fd5f85aed2d93ed9be2b792e764736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb083871ab45137463fe50ab403fd89f48c46327b5ac689f37963752e92d060064736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220eb083871ab45137463fe50ab403fd89f48c46327b5ac689f37963752e92d060064736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b2845157b412703919345638d366a3a437622a9251557c70da984c99fd224a164736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205b2845157b412703919345638d366a3a437622a9251557c70da984c99fd224a164736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207aec9d374217a385544909e233e47dc530ff22774efe9a7b3f32d59634b911de64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212207aec9d374217a385544909e233e47dc530ff22774efe9a7b3f32d59634b911de64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088e89ddd20805ed3cf362bcb1b6fd50508808ee253d328afdaee617ec8ed6dd464736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122088e89ddd20805ed3cf362bcb1b6fd50508808ee253d328afdaee617ec8ed6dd464736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099dc6e723e28541c81b9dfe9b80160aa492ed578a0a0233f4ab4731b030d604164736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122099dc6e723e28541c81b9dfe9b80160aa492ed578a0a0233f4ab4731b030d604164736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -22,2 +22,7 @@ {

"type": "address[]"
},
{
"internalType": "address",
"name": "admin",
"type": "address"
}

@@ -75,3 +80,22 @@ ],

{
"indexed": false,
"internalType": "bytes32",
"name": "salt",
"type": "bytes32"
}
],
"name": "CallSalt",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "id",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "uint256",

@@ -224,2 +248,15 @@ "name": "index",

"inputs": [],
"name": "CANCELLER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",

@@ -302,3 +339,3 @@ "outputs": [

"internalType": "bytes",
"name": "data",
"name": "payload",
"type": "bytes"

@@ -336,3 +373,3 @@ },

"internalType": "bytes[]",
"name": "datas",
"name": "payloads",
"type": "bytes[]"

@@ -362,3 +399,3 @@ },

"internalType": "uint256",
"name": "duration",
"name": "",
"type": "uint256"

@@ -401,3 +438,3 @@ }

"internalType": "uint256",
"name": "timestamp",
"name": "",
"type": "uint256"

@@ -483,3 +520,3 @@ }

"internalType": "bytes32",
"name": "hash",
"name": "",
"type": "bytes32"

@@ -505,3 +542,3 @@ }

"internalType": "bytes[]",
"name": "datas",
"name": "payloads",
"type": "bytes[]"

@@ -524,3 +561,3 @@ },

"internalType": "bytes32",
"name": "hash",
"name": "",
"type": "bytes32"

@@ -544,3 +581,3 @@ }

"internalType": "bool",
"name": "pending",
"name": "",
"type": "bool"

@@ -564,3 +601,3 @@ }

"internalType": "bool",
"name": "done",
"name": "",
"type": "bool"

@@ -584,3 +621,3 @@ }

"internalType": "bool",
"name": "pending",
"name": "",
"type": "bool"

@@ -604,3 +641,3 @@ }

"internalType": "bool",
"name": "ready",
"name": "",
"type": "bool"

@@ -615,2 +652,114 @@ }

{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "uint256[]",
"name": "",
"type": "uint256[]"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155BatchReceived",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC1155Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "uint256",
"name": "",
"type": "uint256"
},
{
"internalType": "bytes",
"name": "",
"type": "bytes"
}
],
"name": "onERC721Received",
"outputs": [
{
"internalType": "bytes4",
"name": "",
"type": "bytes4"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",

@@ -701,3 +850,3 @@ "name": "role",

"internalType": "bytes[]",
"name": "datas",
"name": "payloads",
"type": "bytes[]"

@@ -763,6 +912,6 @@ },

],
"bytecode": "0x60806040523480156200001157600080fd5b5060405162001e8238038062001e828339810160408190526200003491620003c6565b6200004f60008051602062001e2283398151915280620001e1565b6200007960008051602062001e4283398151915260008051602062001e22833981519152620001e1565b620000a360008051602062001e6283398151915260008051602062001e22833981519152620001e1565b620000be60008051602062001e228339815191523362000236565b620000d960008051602062001e228339815191523062000236565b60005b825181101562000142576200012f60008051602062001e428339815191528483815181106200011b57634e487b7160e01b600052603260045260246000fd5b60200260200101516200023660201b60201c565b6200013a8162000437565b9050620000dc565b5060005b815181101562000198576200018560008051602062001e628339815191528383815181106200011b57634e487b7160e01b600052603260045260246000fd5b620001908162000437565b905062000146565b5060028390556040805160008152602081018590527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505062000475565b6000620001ee8362000246565b600084815260208190526040808220600101859055519192508391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b6200024282826200025e565b5050565b6000818152602081905260409020600101545b919050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000242576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002ba3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b80516001600160a01b03811681146200025957600080fd5b600082601f83011262000327578081fd5b815160206001600160401b03808311156200034657620003466200045f565b8260051b604051601f19603f830116810181811084821117156200036e576200036e6200045f565b604052848152838101925086840182880185018910156200038d578687fd5b8692505b85831015620003ba57620003a581620002fe565b84529284019260019290920191840162000391565b50979650505050505050565b600080600060608486031215620003db578283fd5b835160208501519093506001600160401b0380821115620003fa578384fd5b620004088783880162000316565b935060408601519150808211156200041e578283fd5b506200042d8682870162000316565b9150509250925092565b60006000198214156200045857634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b61199d80620004856000396000f3fe60806040526004361061014f5760003560e01c806364d62353116100b6578063b1c5f4271161006f578063b1c5f427146103f3578063c4d252f514610413578063d45c443514610433578063d547741f14610460578063e38335e514610480578063f27a0c921461049357610156565b806364d623531461033c5780638065657f1461035c5780638f2a0bb01461037c5780638f61f4f51461039c57806391d14854146103be578063a217fddf146103de57610156565b8063248a9ca311610108578063248a9ca31461025b5780632ab0f5291461028b5780632f2ff15d146102bc57806331d50750146102dc57806336568abe146102fc578063584b153e1461031c57610156565b806301d5062a1461015b57806301ffc9a71461017d57806307bd0265146101b25780630d3cf6fc146101f4578063134008d31461022857806313bc9f201461023b57610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611312565b6104a8565b005b34801561018957600080fd5b5061019d61019836600461151b565b61052d565b60405190151581526020015b60405180910390f35b3480156101be57600080fd5b506101e67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101a9565b34801561020057600080fd5b506101e67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b61017b6102363660046112a8565b610566565b34801561024757600080fd5b5061019d6102563660046114d8565b6105de565b34801561026757600080fd5b506101e66102763660046114d8565b60009081526020819052604090206001015490565b34801561029757600080fd5b5061019d6102a63660046114d8565b6000908152600160208190526040909120541490565b3480156102c857600080fd5b5061017b6102d73660046114f0565b610604565b3480156102e857600080fd5b5061019d6102f73660046114d8565b61062f565b34801561030857600080fd5b5061017b6103173660046114f0565b610648565b34801561032857600080fd5b5061019d6103373660046114d8565b6106cb565b34801561034857600080fd5b5061017b6103573660046114d8565b6106e1565b34801561036857600080fd5b506101e66103773660046112a8565b610785565b34801561038857600080fd5b5061017b61039736600461142a565b6107c4565b3480156103a857600080fd5b506101e660008051602061194883398151915281565b3480156103ca57600080fd5b5061019d6103d93660046114f0565b61092f565b3480156103ea57600080fd5b506101e6600081565b3480156103ff57600080fd5b506101e661040e366004611385565b610958565b34801561041f57600080fd5b5061017b61042e3660046114d8565b61099d565b34801561043f57600080fd5b506101e661044e3660046114d8565b60009081526001602052604090205490565b34801561046c57600080fd5b5061017b61047b3660046114f0565b610a61565b61017b61048e366004611385565b610a87565b34801561049f57600080fd5b506002546101e6565b6000805160206119488339815191526104c281335b610be6565b60006104d2898989898989610785565b90506104de8184610c4a565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161051a969594939291906116b1565b60405180910390a3505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061055e57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361059281600061092f565b6105a0576105a081336104bd565b60006105b0888888888888610785565b90506105bc8185610d39565b6105cb8160008a8a8a8a610dd5565b6105d481610ee9565b5050505050505050565b6000818152600160205260408120546001811180156105fd5750428111155b9392505050565b60008281526020819052604090206001015461062081336104bd565b61062a8383610f22565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146106bd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106c78282610fa6565b5050565b6000818152600160208190526040822054610641565b3330146107445760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016106b4565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016107a2969594939291906116b1565b6040516020818303038152906040528051906020012090509695505050505050565b6000805160206119488339815191526107dd81336104bd565b8887146107fc5760405162461bcd60e51b81526004016106b4906117c6565b88851461081b5760405162461bcd60e51b81526004016106b4906117c6565b600061082d8b8b8b8b8b8b8b8b610958565b90506108398184610c4a565b60005b8a8110156109215780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e8581811061088757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061089c919061128e565b8d8d868181106108bc57634e487b7160e01b600052603260045260246000fd5b905060200201358c8c878181106108e357634e487b7160e01b600052603260045260246000fd5b90506020028101906108f59190611853565b8c8b604051610909969594939291906116b1565b60405180910390a361091a81611916565b905061083c565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600088888888888888886040516020016109799897969594939291906116ee565b60405160208183030381529060405280519060200120905098975050505050505050565b6000805160206119488339815191526109b681336104bd565b6109bf826106cb565b610a255760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016106b4565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610a7d81336104bd565b61062a8383610fa6565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610ab381600061092f565b610ac157610ac181336104bd565b878614610ae05760405162461bcd60e51b81526004016106b4906117c6565b878414610aff5760405162461bcd60e51b81526004016106b4906117c6565b6000610b118a8a8a8a8a8a8a8a610958565b9050610b1d8185610d39565b60005b89811015610bd057610bc082828d8d85818110610b4d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b62919061128e565b8c8c86818110610b8257634e487b7160e01b600052603260045260246000fd5b905060200201358b8b87818110610ba957634e487b7160e01b600052603260045260246000fd5b9050602002810190610bbb9190611853565b610dd5565b610bc981611916565b9050610b20565b50610bda81610ee9565b50505050505050505050565b610bf0828261092f565b6106c757610c08816001600160a01b0316601461100b565b610c1383602061100b565b604051602001610c2492919061160a565b60408051601f198184030181529082905262461bcd60e51b82526106b491600401611793565b610c538261062f565b15610cb85760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016106b4565b600254811015610d195760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016106b4565b610d238142611898565b6000928352600160205260409092209190915550565b610d42826105de565b610d5e5760405162461bcd60e51b81526004016106b490611809565b801580610d7a5750600081815260016020819052604090912054145b6106c75760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016106b4565b6000846001600160a01b0316848484604051610df29291906115fa565b60006040518083038185875af1925050503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b5050905080610ea15760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016106b4565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051610ed8949392919061167f565b60405180910390a350505050505050565b610ef2816105de565b610f0e5760405162461bcd60e51b81526004016106b490611809565b600090815260016020819052604090912055565b610f2c828261092f565b6106c7576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610f623390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610fb0828261092f565b156106c7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060600061101a8360026118b0565b611025906002611898565b67ffffffffffffffff81111561104b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611075576020820181803683370190505b509050600360fc1b8160008151811061109e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110db57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006110ff8460026118b0565b61110a906001611898565b90505b600181111561119e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061114c57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061117057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611197816118ff565b905061110d565b5083156105fd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106b4565b80356001600160a01b038116811461056157600080fd5b60008083601f840112611215578182fd5b50813567ffffffffffffffff81111561122c578182fd5b6020830191508360208260051b850101111561124757600080fd5b9250929050565b60008083601f84011261125f578182fd5b50813567ffffffffffffffff811115611276578182fd5b60208301915083602082850101111561124757600080fd5b60006020828403121561129f578081fd5b6105fd826111ed565b60008060008060008060a087890312156112c0578182fd5b6112c9876111ed565b955060208701359450604087013567ffffffffffffffff8111156112eb578283fd5b6112f789828a0161124e565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a03121561132c578081fd5b611335886111ed565b965060208801359550604088013567ffffffffffffffff811115611357578182fd5b6113638a828b0161124e565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156113a0578081fd5b883567ffffffffffffffff808211156113b7578283fd5b6113c38c838d01611204565b909a50985060208b01359150808211156113db578283fd5b6113e78c838d01611204565b909850965060408b01359150808211156113ff578283fd5b5061140c8b828c01611204565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c031215611447578081fd5b893567ffffffffffffffff8082111561145e578283fd5b61146a8d838e01611204565b909b50995060208c0135915080821115611482578283fd5b61148e8d838e01611204565b909950975060408c01359150808211156114a6578283fd5b506114b38c828d01611204565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b6000602082840312156114e9578081fd5b5035919050565b60008060408385031215611502578182fd5b82359150611512602084016111ed565b90509250929050565b60006020828403121561152c578081fd5b81356001600160e01b0319811681146105fd578182fd5b60008284526020808501808196508560051b8101915084845b878110156115c35782840389528135601e1988360301811261157c578687fd5b8701803567ffffffffffffffff811115611594578788fd5b8036038913156115a2578788fd5b6115af86828985016115d0565b9a87019a955050509084019060010161155c565b5091979650505050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516116428160178501602088016118cf565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116738160288401602088016118cf565b01602801949350505050565b600060018060a01b0386168252846020830152606060408301526116a76060830184866115d0565b9695505050505050565b600060018060a01b038816825286602083015260a060408301526116d960a0830186886115d0565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b81101561172f576001600160a01b0361171a846111ed565b16825260209283019290910190600101611701565b5083810360208501528881526001600160fb1b0389111561174e578283fd5b8860051b9150818a6020830137016020818101838152848303909101604085015261177a81888a611543565b6060850196909652505050608001529695505050505050565b60006020825282518060208401526117b28160408501602087016118cf565b601f01601f19169190910160400192915050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b6000808335601e19843603018112611869578283fd5b83018035915067ffffffffffffffff821115611883578283fd5b60200191503681900382131561124757600080fd5b600082198211156118ab576118ab611931565b500190565b60008160001904831182151516156118ca576118ca611931565b500290565b60005b838110156118ea5781810151838201526020016118d2565b838111156118f9576000848401525b50505050565b60008161190e5761190e611931565b506000190190565b600060001982141561192a5761192a611931565b5060010190565b634e487b7160e01b600052601160045260246000fdfeb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1a2646970667358221220c7fd4afc10ee8a705ac56319b77ff7c0ae5cca455650df23ce72b2cac69c785164736f6c634300080300335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63",
"deployedBytecode": "0x60806040526004361061014f5760003560e01c806364d62353116100b6578063b1c5f4271161006f578063b1c5f427146103f3578063c4d252f514610413578063d45c443514610433578063d547741f14610460578063e38335e514610480578063f27a0c921461049357610156565b806364d623531461033c5780638065657f1461035c5780638f2a0bb01461037c5780638f61f4f51461039c57806391d14854146103be578063a217fddf146103de57610156565b8063248a9ca311610108578063248a9ca31461025b5780632ab0f5291461028b5780632f2ff15d146102bc57806331d50750146102dc57806336568abe146102fc578063584b153e1461031c57610156565b806301d5062a1461015b57806301ffc9a71461017d57806307bd0265146101b25780630d3cf6fc146101f4578063134008d31461022857806313bc9f201461023b57610156565b3661015657005b600080fd5b34801561016757600080fd5b5061017b610176366004611312565b6104a8565b005b34801561018957600080fd5b5061019d61019836600461151b565b61052d565b60405190151581526020015b60405180910390f35b3480156101be57600080fd5b506101e67fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b6040519081526020016101a9565b34801561020057600080fd5b506101e67f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b61017b6102363660046112a8565b610566565b34801561024757600080fd5b5061019d6102563660046114d8565b6105de565b34801561026757600080fd5b506101e66102763660046114d8565b60009081526020819052604090206001015490565b34801561029757600080fd5b5061019d6102a63660046114d8565b6000908152600160208190526040909120541490565b3480156102c857600080fd5b5061017b6102d73660046114f0565b610604565b3480156102e857600080fd5b5061019d6102f73660046114d8565b61062f565b34801561030857600080fd5b5061017b6103173660046114f0565b610648565b34801561032857600080fd5b5061019d6103373660046114d8565b6106cb565b34801561034857600080fd5b5061017b6103573660046114d8565b6106e1565b34801561036857600080fd5b506101e66103773660046112a8565b610785565b34801561038857600080fd5b5061017b61039736600461142a565b6107c4565b3480156103a857600080fd5b506101e660008051602061194883398151915281565b3480156103ca57600080fd5b5061019d6103d93660046114f0565b61092f565b3480156103ea57600080fd5b506101e6600081565b3480156103ff57600080fd5b506101e661040e366004611385565b610958565b34801561041f57600080fd5b5061017b61042e3660046114d8565b61099d565b34801561043f57600080fd5b506101e661044e3660046114d8565b60009081526001602052604090205490565b34801561046c57600080fd5b5061017b61047b3660046114f0565b610a61565b61017b61048e366004611385565b610a87565b34801561049f57600080fd5b506002546101e6565b6000805160206119488339815191526104c281335b610be6565b60006104d2898989898989610785565b90506104de8184610c4a565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a60405161051a969594939291906116b1565b60405180910390a3505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061055e57506301ffc9a760e01b6001600160e01b03198316145b90505b919050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6361059281600061092f565b6105a0576105a081336104bd565b60006105b0888888888888610785565b90506105bc8185610d39565b6105cb8160008a8a8a8a610dd5565b6105d481610ee9565b5050505050505050565b6000818152600160205260408120546001811180156105fd5750428111155b9392505050565b60008281526020819052604090206001015461062081336104bd565b61062a8383610f22565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146106bd5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6106c78282610fa6565b5050565b6000818152600160208190526040822054610641565b3330146107445760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b60648201526084016106b4565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016107a2969594939291906116b1565b6040516020818303038152906040528051906020012090509695505050505050565b6000805160206119488339815191526107dd81336104bd565b8887146107fc5760405162461bcd60e51b81526004016106b4906117c6565b88851461081b5760405162461bcd60e51b81526004016106b4906117c6565b600061082d8b8b8b8b8b8b8b8b610958565b90506108398184610c4a565b60005b8a8110156109215780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e8581811061088757634e487b7160e01b600052603260045260246000fd5b905060200201602081019061089c919061128e565b8d8d868181106108bc57634e487b7160e01b600052603260045260246000fd5b905060200201358c8c878181106108e357634e487b7160e01b600052603260045260246000fd5b90506020028101906108f59190611853565b8c8b604051610909969594939291906116b1565b60405180910390a361091a81611916565b905061083c565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b600088888888888888886040516020016109799897969594939291906116ee565b60405160208183030381529060405280519060200120905098975050505050505050565b6000805160206119488339815191526109b681336104bd565b6109bf826106cb565b610a255760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b60648201526084016106b4565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610a7d81336104bd565b61062a8383610fa6565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610ab381600061092f565b610ac157610ac181336104bd565b878614610ae05760405162461bcd60e51b81526004016106b4906117c6565b878414610aff5760405162461bcd60e51b81526004016106b4906117c6565b6000610b118a8a8a8a8a8a8a8a610958565b9050610b1d8185610d39565b60005b89811015610bd057610bc082828d8d85818110610b4d57634e487b7160e01b600052603260045260246000fd5b9050602002016020810190610b62919061128e565b8c8c86818110610b8257634e487b7160e01b600052603260045260246000fd5b905060200201358b8b87818110610ba957634e487b7160e01b600052603260045260246000fd5b9050602002810190610bbb9190611853565b610dd5565b610bc981611916565b9050610b20565b50610bda81610ee9565b50505050505050505050565b610bf0828261092f565b6106c757610c08816001600160a01b0316601461100b565b610c1383602061100b565b604051602001610c2492919061160a565b60408051601f198184030181529082905262461bcd60e51b82526106b491600401611793565b610c538261062f565b15610cb85760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b60648201526084016106b4565b600254811015610d195760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b60648201526084016106b4565b610d238142611898565b6000928352600160205260409092209190915550565b610d42826105de565b610d5e5760405162461bcd60e51b81526004016106b490611809565b801580610d7a5750600081815260016020819052604090912054145b6106c75760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b60648201526084016106b4565b6000846001600160a01b0316848484604051610df29291906115fa565b60006040518083038185875af1925050503d8060008114610e2f576040519150601f19603f3d011682016040523d82523d6000602084013e610e34565b606091505b5050905080610ea15760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b60648201526084016106b4565b85877fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5887878787604051610ed8949392919061167f565b60405180910390a350505050505050565b610ef2816105de565b610f0e5760405162461bcd60e51b81526004016106b490611809565b600090815260016020819052604090912055565b610f2c828261092f565b6106c7576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055610f623390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b610fb0828261092f565b156106c7576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6060600061101a8360026118b0565b611025906002611898565b67ffffffffffffffff81111561104b57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611075576020820181803683370190505b509050600360fc1b8160008151811061109e57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106110db57634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060006110ff8460026118b0565b61110a906001611898565b90505b600181111561119e576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061114c57634e487b7160e01b600052603260045260246000fd5b1a60f81b82828151811061117057634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a90535060049490941c93611197816118ff565b905061110d565b5083156105fd5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016106b4565b80356001600160a01b038116811461056157600080fd5b60008083601f840112611215578182fd5b50813567ffffffffffffffff81111561122c578182fd5b6020830191508360208260051b850101111561124757600080fd5b9250929050565b60008083601f84011261125f578182fd5b50813567ffffffffffffffff811115611276578182fd5b60208301915083602082850101111561124757600080fd5b60006020828403121561129f578081fd5b6105fd826111ed565b60008060008060008060a087890312156112c0578182fd5b6112c9876111ed565b955060208701359450604087013567ffffffffffffffff8111156112eb578283fd5b6112f789828a0161124e565b979a9699509760608101359660809091013595509350505050565b600080600080600080600060c0888a03121561132c578081fd5b611335886111ed565b965060208801359550604088013567ffffffffffffffff811115611357578182fd5b6113638a828b0161124e565b989b979a50986060810135976080820135975060a09091013595509350505050565b60008060008060008060008060a0898b0312156113a0578081fd5b883567ffffffffffffffff808211156113b7578283fd5b6113c38c838d01611204565b909a50985060208b01359150808211156113db578283fd5b6113e78c838d01611204565b909850965060408b01359150808211156113ff578283fd5b5061140c8b828c01611204565b999c989b509699959896976060870135966080013595509350505050565b600080600080600080600080600060c08a8c031215611447578081fd5b893567ffffffffffffffff8082111561145e578283fd5b61146a8d838e01611204565b909b50995060208c0135915080821115611482578283fd5b61148e8d838e01611204565b909950975060408c01359150808211156114a6578283fd5b506114b38c828d01611204565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b6000602082840312156114e9578081fd5b5035919050565b60008060408385031215611502578182fd5b82359150611512602084016111ed565b90509250929050565b60006020828403121561152c578081fd5b81356001600160e01b0319811681146105fd578182fd5b60008284526020808501808196508560051b8101915084845b878110156115c35782840389528135601e1988360301811261157c578687fd5b8701803567ffffffffffffffff811115611594578788fd5b8036038913156115a2578788fd5b6115af86828985016115d0565b9a87019a955050509084019060010161155c565b5091979650505050505050565b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b6000828483379101908152919050565b60007f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000825283516116428160178501602088016118cf565b7001034b99036b4b9b9b4b733903937b6329607d1b60179184019182015283516116738160288401602088016118cf565b01602801949350505050565b600060018060a01b0386168252846020830152606060408301526116a76060830184866115d0565b9695505050505050565b600060018060a01b038816825286602083015260a060408301526116d960a0830186886115d0565b60608301949094525060800152949350505050565b60a0808252810188905260008960c08301825b8b81101561172f576001600160a01b0361171a846111ed565b16825260209283019290910190600101611701565b5083810360208501528881526001600160fb1b0389111561174e578283fd5b8860051b9150818a6020830137016020818101838152848303909101604085015261177a81888a611543565b6060850196909652505050608001529695505050505050565b60006020825282518060208401526117b28160408501602087016118cf565b601f01601f19169190910160400192915050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b6000808335601e19843603018112611869578283fd5b83018035915067ffffffffffffffff821115611883578283fd5b60200191503681900382131561124757600080fd5b600082198211156118ab576118ab611931565b500190565b60008160001904831182151516156118ca576118ca611931565b500290565b60005b838110156118ea5781810151838201526020016118d2565b838111156118f9576000848401525b50505050565b60008161190e5761190e611931565b506000190190565b600060001982141561192a5761192a611931565b5060010190565b634e487b7160e01b600052601160045260246000fdfeb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1a2646970667358221220c7fd4afc10ee8a705ac56319b77ff7c0ae5cca455650df23ce72b2cac69c785164736f6c63430008030033",
"bytecode": "0x60806040523480156200001157600080fd5b50604051620023a4380380620023a4833981016040819052620000349162000408565b6200004f60008051602062002324833981519152806200022d565b6200007960008051602062002344833981519152600080516020620023248339815191526200022d565b620000a360008051602062002364833981519152600080516020620023248339815191526200022d565b620000cd60008051602062002384833981519152600080516020620023248339815191526200022d565b620000e8600080516020620023248339815191523062000278565b6001600160a01b03811615620001135762000113600080516020620023248339815191528262000278565b60005b835181101562000199576200015d600080516020620023448339815191528583815181106200014957620001496200048f565b60200260200101516200027860201b60201c565b62000186600080516020620023848339815191528583815181106200014957620001496200048f565b6200019181620004a5565b905062000116565b5060005b8251811015620001e357620001d0600080516020620023648339815191528483815181106200014957620001496200048f565b620001db81620004a5565b90506200019d565b5060028490556040805160008152602081018690527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a150505050620004cd565b600082815260208190526040808220600101805490849055905190918391839186917fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff9190a4505050565b62000284828262000288565b5050565b6000828152602081815260408083206001600160a01b038516845290915290205460ff1662000284576000828152602081815260408083206001600160a01b03851684529091529020805460ff19166001179055620002e43390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b634e487b7160e01b600052604160045260246000fd5b80516001600160a01b03811681146200035657600080fd5b919050565b600082601f8301126200036d57600080fd5b815160206001600160401b03808311156200038c576200038c62000328565b8260051b604051601f19603f83011681018181108482111715620003b457620003b462000328565b604052938452858101830193838101925087851115620003d357600080fd5b83870191505b84821015620003fd57620003ed826200033e565b83529183019190830190620003d9565b979650505050505050565b600080600080608085870312156200041f57600080fd5b845160208601519094506001600160401b03808211156200043f57600080fd5b6200044d888389016200035b565b945060408701519150808211156200046457600080fd5b5062000473878288016200035b565b92505062000484606086016200033e565b905092959194509250565b634e487b7160e01b600052603260045260246000fd5b600060018201620004c657634e487b7160e01b600052601160045260246000fd5b5060010190565b611e4780620004dd6000396000f3fe6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611442565b6105f6565b005b3480156101f557600080fd5b506102096102043660046114b6565b6106cc565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a23660046114e0565b6106f7565b3480156102b357600080fd5b506102096102c236600461154b565b6107ac565b3480156102d357600080fd5b506102f26102e2366004611619565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b5061025261032636600461154b565b60009081526020819052604090206001015490565b34801561034757600080fd5b5061020961035636600461154b565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e7610387366004611680565b6107d2565b34801561039857600080fd5b506102096103a736600461154b565b6107fc565b3480156103b857600080fd5b506101e76103c7366004611680565b610815565b3480156103d857600080fd5b506102096103e736600461154b565b610898565b3480156103f857600080fd5b506101e761040736600461154b565b6108ae565b34801561041857600080fd5b506102526104273660046114e0565b610952565b34801561043857600080fd5b506101e76104473660046116f0565b610991565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b366004611680565b610b24565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b506102526105043660046117a1565b610b4d565b34801561051557600080fd5b506102f26105243660046118c8565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e761055036600461154b565b610b92565b34801561056157600080fd5b5061025261057036600461154b565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d366004611680565b610c67565b6101e76105b03660046117a1565b610c8c565b3480156105c157600080fd5b506102f26105d0366004611971565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610e16565b6000610630898989898989610952565b905061063c8184610e23565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610678969594939291906119fe565b60405180910390a383156106c157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106b891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106f157506106f182610f12565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610723816000610b24565b610731576107318133610f47565b6000610741888888888888610952565b905061074d8185610fa0565b6107598888888861103c565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107919493929190611a3b565b60405180910390a36107a28161110f565b5050505050505050565b6000818152600160205260408120546001811180156107cb5750428111155b9392505050565b6000828152602081905260409020600101546107ed81610e16565b6107f78383611148565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b038116331461088a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61089482826111cc565b5050565b600081815260016020819052604082205461080e565b3330146109115760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610881565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161096f969594939291906119fe565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109bb81610e16565b8887146109da5760405162461bcd60e51b815260040161088190611a6d565b8885146109f95760405162461bcd60e51b815260040161088190611a6d565b6000610a0b8b8b8b8b8b8b8b8b610b4d565b9050610a178184610e23565b60005b8a811015610ad55780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a5757610a57611ab0565b9050602002016020810190610a6c9190611ac6565b8d8d86818110610a7e57610a7e611ab0565b905060200201358c8c87818110610a9757610a97611ab0565b9050602002810190610aa99190611ae1565b8c8b604051610abd969594939291906119fe565b60405180910390a3610ace81611b3d565b9050610a1a565b508315610b1757807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b0e91815260200190565b60405180910390a25b5050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610b6e989796959493929190611be6565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610bbc81610e16565b610bc582610898565b610c2b5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610881565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c8281610e16565b6107f783836111cc565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610cb8816000610b24565b610cc657610cc68133610f47565b878614610ce55760405162461bcd60e51b815260040161088190611a6d565b878414610d045760405162461bcd60e51b815260040161088190611a6d565b6000610d168a8a8a8a8a8a8a8a610b4d565b9050610d228185610fa0565b60005b89811015610e005760008b8b83818110610d4157610d41611ab0565b9050602002016020810190610d569190611ac6565b905060008a8a84818110610d6c57610d6c611ab0565b9050602002013590503660008a8a86818110610d8a57610d8a611ab0565b9050602002810190610d9c9190611ae1565b91509150610dac8484848461103c565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610de39493929190611a3b565b60405180910390a35050505080610df990611b3d565b9050610d25565b50610e0a8161110f565b50505050505050505050565b610e208133610f47565b50565b610e2c826107fc565b15610e915760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610881565b600254811015610ef25760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610881565b610efc8142611c91565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106f157506301ffc9a760e01b6001600160e01b03198316146106f1565b610f518282610b24565b61089457610f5e81611231565b610f69836020611243565b604051602001610f7a929190611cd9565b60408051601f198184030181529082905262461bcd60e51b825261088191600401611d4e565b610fa9826107ac565b610fc55760405162461bcd60e51b815260040161088190611d81565b801580610fe15750600081815260016020819052604090912054145b6108945760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610881565b6000846001600160a01b0316848484604051611059929190611dcb565b60006040518083038185875af1925050503d8060008114611096576040519150601f19603f3d011682016040523d82523d6000602084013e61109b565b606091505b50509050806111085760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610881565b5050505050565b611118816107ac565b6111345760405162461bcd60e51b815260040161088190611d81565b600090815260016020819052604090912055565b6111528282610b24565b610894576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111d68282610b24565b15610894576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106f16001600160a01b03831660145b60606000611252836002611ddb565b61125d906002611c91565b6001600160401b0381111561127457611274611564565b6040519080825280601f01601f19166020018201604052801561129e576020820181803683370190505b509050600360fc1b816000815181106112b9576112b9611ab0565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112e8576112e8611ab0565b60200101906001600160f81b031916908160001a905350600061130c846002611ddb565b611317906001611c91565b90505b600181111561138f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061134b5761134b611ab0565b1a60f81b82828151811061136157611361611ab0565b60200101906001600160f81b031916908160001a90535060049490941c9361138881611dfa565b905061131a565b5083156107cb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610881565b80356001600160a01b03811681146113f557600080fd5b919050565b60008083601f84011261140c57600080fd5b5081356001600160401b0381111561142357600080fd5b60208301915083602082850101111561143b57600080fd5b9250929050565b600080600080600080600060c0888a03121561145d57600080fd5b611466886113de565b96506020880135955060408801356001600160401b0381111561148857600080fd5b6114948a828b016113fa565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156114c857600080fd5b81356001600160e01b0319811681146107cb57600080fd5b60008060008060008060a087890312156114f957600080fd5b611502876113de565b95506020870135945060408701356001600160401b0381111561152457600080fd5b61153089828a016113fa565b979a9699509760608101359660809091013595509350505050565b60006020828403121561155d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156115a2576115a2611564565b604052919050565b600082601f8301126115bb57600080fd5b81356001600160401b038111156115d4576115d4611564565b6115e7601f8201601f191660200161157a565b8181528460208386010111156115fc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561162f57600080fd5b611638856113de565b9350611646602086016113de565b92506040850135915060608501356001600160401b0381111561166857600080fd5b611674878288016115aa565b91505092959194509250565b6000806040838503121561169357600080fd5b823591506116a3602084016113de565b90509250929050565b60008083601f8401126116be57600080fd5b5081356001600160401b038111156116d557600080fd5b6020830191508360208260051b850101111561143b57600080fd5b600080600080600080600080600060c08a8c03121561170e57600080fd5b89356001600160401b038082111561172557600080fd5b6117318d838e016116ac565b909b50995060208c013591508082111561174a57600080fd5b6117568d838e016116ac565b909950975060408c013591508082111561176f57600080fd5b5061177c8c828d016116ac565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b0312156117bd57600080fd5b88356001600160401b03808211156117d457600080fd5b6117e08c838d016116ac565b909a50985060208b01359150808211156117f957600080fd5b6118058c838d016116ac565b909850965060408b013591508082111561181e57600080fd5b5061182b8b828c016116ac565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261185a57600080fd5b813560206001600160401b0382111561187557611875611564565b8160051b61188482820161157a565b928352848101820192828101908785111561189e57600080fd5b83870192505b848310156118bd578235825291830191908301906118a4565b979650505050505050565b600080600080600060a086880312156118e057600080fd5b6118e9866113de565b94506118f7602087016113de565b935060408601356001600160401b038082111561191357600080fd5b61191f89838a01611849565b9450606088013591508082111561193557600080fd5b61194189838a01611849565b9350608088013591508082111561195757600080fd5b50611964888289016115aa565b9150509295509295909350565b600080600080600060a0868803121561198957600080fd5b611992866113de565b94506119a0602087016113de565b9350604086013592506060860135915060808601356001600160401b038111156119c957600080fd5b611964888289016115aa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201526000611a2660a0830186886119d5565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201526000611a636060830184866119d5565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ad857600080fd5b6107cb826113de565b6000808335601e19843603018112611af857600080fd5b8301803591506001600160401b03821115611b1257600080fd5b60200191503681900382131561143b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b4f57611b4f611b27565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611bd95782840389528135601e19883603018112611b9157600080fd5b870180356001600160401b03811115611ba957600080fd5b803603891315611bb857600080fd5b611bc586828985016119d5565b9a87019a9550505090840190600101611b70565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611c27576001600160a01b03611c12846113de565b16825260209283019290910190600101611bf9565b5083810360208501528881526001600160fb1b03891115611c4757600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611c7881888a611b56565b6060850196909652505050608001529695505050505050565b60008219821115611ca457611ca4611b27565b500190565b60005b83811015611cc4578181015183820152602001611cac565b83811115611cd3576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611d11816017850160208801611ca9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611d42816028840160208801611ca9565b01602801949350505050565b6020815260008251806020840152611d6d816040850160208701611ca9565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611df557611df5611b27565b500290565b600081611e0957611e09611b27565b50600019019056fea2646970667358221220be35042c03cd52cc4d975802efc7798f58a0d2d816f72b63513451f5ef6fbd9d64736f6c634300080d00335f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5b09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63fd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783",
"deployedBytecode": "0x6080604052600436106101bb5760003560e01c80638065657f116100ec578063bc197c811161008a578063d547741f11610064578063d547741f14610582578063e38335e5146105a2578063f23a6e61146105b5578063f27a0c92146105e157600080fd5b8063bc197c8114610509578063c4d252f514610535578063d45c44351461055557600080fd5b806391d14854116100c657806391d1485414610480578063a217fddf146104a0578063b08e51c0146104b5578063b1c5f427146104e957600080fd5b80638065657f1461040c5780638f2a0bb01461042c5780638f61f4f51461044c57600080fd5b8063248a9ca31161015957806331d507501161013357806331d507501461038c57806336568abe146103ac578063584b153e146103cc57806364d62353146103ec57600080fd5b8063248a9ca31461030b5780632ab0f5291461033b5780632f2ff15d1461036c57600080fd5b80630d3cf6fc116101955780630d3cf6fc14610260578063134008d31461029457806313bc9f20146102a7578063150b7a02146102c757600080fd5b806301d5062a146101c757806301ffc9a7146101e957806307bd02651461021e57600080fd5b366101c257005b600080fd5b3480156101d357600080fd5b506101e76101e2366004611442565b6105f6565b005b3480156101f557600080fd5b506102096102043660046114b6565b6106cc565b60405190151581526020015b60405180910390f35b34801561022a57600080fd5b506102527fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e6381565b604051908152602001610215565b34801561026c57600080fd5b506102527f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101e76102a23660046114e0565b6106f7565b3480156102b357600080fd5b506102096102c236600461154b565b6107ac565b3480156102d357600080fd5b506102f26102e2366004611619565b630a85bd0160e11b949350505050565b6040516001600160e01b03199091168152602001610215565b34801561031757600080fd5b5061025261032636600461154b565b60009081526020819052604090206001015490565b34801561034757600080fd5b5061020961035636600461154b565b6000908152600160208190526040909120541490565b34801561037857600080fd5b506101e7610387366004611680565b6107d2565b34801561039857600080fd5b506102096103a736600461154b565b6107fc565b3480156103b857600080fd5b506101e76103c7366004611680565b610815565b3480156103d857600080fd5b506102096103e736600461154b565b610898565b3480156103f857600080fd5b506101e761040736600461154b565b6108ae565b34801561041857600080fd5b506102526104273660046114e0565b610952565b34801561043857600080fd5b506101e76104473660046116f0565b610991565b34801561045857600080fd5b506102527fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc181565b34801561048c57600080fd5b5061020961049b366004611680565b610b24565b3480156104ac57600080fd5b50610252600081565b3480156104c157600080fd5b506102527ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104f557600080fd5b506102526105043660046117a1565b610b4d565b34801561051557600080fd5b506102f26105243660046118c8565b63bc197c8160e01b95945050505050565b34801561054157600080fd5b506101e761055036600461154b565b610b92565b34801561056157600080fd5b5061025261057036600461154b565b60009081526001602052604090205490565b34801561058e57600080fd5b506101e761059d366004611680565b610c67565b6101e76105b03660046117a1565b610c8c565b3480156105c157600080fd5b506102f26105d0366004611971565b63f23a6e6160e01b95945050505050565b3480156105ed57600080fd5b50600254610252565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc161062081610e16565b6000610630898989898989610952565b905061063c8184610e23565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610678969594939291906119fe565b60405180910390a383156106c157807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d0387856040516106b891815260200190565b60405180910390a25b505050505050505050565b60006001600160e01b03198216630271189760e51b14806106f157506106f182610f12565b92915050565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610723816000610b24565b610731576107318133610f47565b6000610741888888888888610952565b905061074d8185610fa0565b6107598888888861103c565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a6040516107919493929190611a3b565b60405180910390a36107a28161110f565b5050505050505050565b6000818152600160205260408120546001811180156107cb5750428111155b9392505050565b6000828152602081905260409020600101546107ed81610e16565b6107f78383611148565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b038116331461088a5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61089482826111cc565b5050565b600081815260016020819052604082205461080e565b3330146109115760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b6064820152608401610881565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b600086868686868660405160200161096f969594939291906119fe565b6040516020818303038152906040528051906020012090509695505050505050565b7fb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc16109bb81610e16565b8887146109da5760405162461bcd60e51b815260040161088190611a6d565b8885146109f95760405162461bcd60e51b815260040161088190611a6d565b6000610a0b8b8b8b8b8b8b8b8b610b4d565b9050610a178184610e23565b60005b8a811015610ad55780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e85818110610a5757610a57611ab0565b9050602002016020810190610a6c9190611ac6565b8d8d86818110610a7e57610a7e611ab0565b905060200201358c8c87818110610a9757610a97611ab0565b9050602002810190610aa99190611ae1565b8c8b604051610abd969594939291906119fe565b60405180910390a3610ace81611b3d565b9050610a1a565b508315610b1757807f20fda5fd27a1ea7bf5b9567f143ac5470bb059374a27e8f67cb44f946f6d038785604051610b0e91815260200190565b60405180910390a25b5050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610b6e989796959493929190611be6565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610bbc81610e16565b610bc582610898565b610c2b5760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b6064820152608401610881565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610c8281610e16565b6107f783836111cc565b7fd8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63610cb8816000610b24565b610cc657610cc68133610f47565b878614610ce55760405162461bcd60e51b815260040161088190611a6d565b878414610d045760405162461bcd60e51b815260040161088190611a6d565b6000610d168a8a8a8a8a8a8a8a610b4d565b9050610d228185610fa0565b60005b89811015610e005760008b8b83818110610d4157610d41611ab0565b9050602002016020810190610d569190611ac6565b905060008a8a84818110610d6c57610d6c611ab0565b9050602002013590503660008a8a86818110610d8a57610d8a611ab0565b9050602002810190610d9c9190611ae1565b91509150610dac8484848461103c565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610de39493929190611a3b565b60405180910390a35050505080610df990611b3d565b9050610d25565b50610e0a8161110f565b50505050505050505050565b610e208133610f47565b50565b610e2c826107fc565b15610e915760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b6064820152608401610881565b600254811015610ef25760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b6064820152608401610881565b610efc8142611c91565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b14806106f157506301ffc9a760e01b6001600160e01b03198316146106f1565b610f518282610b24565b61089457610f5e81611231565b610f69836020611243565b604051602001610f7a929190611cd9565b60408051601f198184030181529082905262461bcd60e51b825261088191600401611d4e565b610fa9826107ac565b610fc55760405162461bcd60e51b815260040161088190611d81565b801580610fe15750600081815260016020819052604090912054145b6108945760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b6064820152608401610881565b6000846001600160a01b0316848484604051611059929190611dcb565b60006040518083038185875af1925050503d8060008114611096576040519150601f19603f3d011682016040523d82523d6000602084013e61109b565b606091505b50509050806111085760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b6064820152608401610881565b5050505050565b611118816107ac565b6111345760405162461bcd60e51b815260040161088190611d81565b600090815260016020819052604090912055565b6111528282610b24565b610894576000828152602081815260408083206001600160a01b03851684529091529020805460ff191660011790556111883390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6111d68282610b24565b15610894576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106f16001600160a01b03831660145b60606000611252836002611ddb565b61125d906002611c91565b6001600160401b0381111561127457611274611564565b6040519080825280601f01601f19166020018201604052801561129e576020820181803683370190505b509050600360fc1b816000815181106112b9576112b9611ab0565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112e8576112e8611ab0565b60200101906001600160f81b031916908160001a905350600061130c846002611ddb565b611317906001611c91565b90505b600181111561138f576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061134b5761134b611ab0565b1a60f81b82828151811061136157611361611ab0565b60200101906001600160f81b031916908160001a90535060049490941c9361138881611dfa565b905061131a565b5083156107cb5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610881565b80356001600160a01b03811681146113f557600080fd5b919050565b60008083601f84011261140c57600080fd5b5081356001600160401b0381111561142357600080fd5b60208301915083602082850101111561143b57600080fd5b9250929050565b600080600080600080600060c0888a03121561145d57600080fd5b611466886113de565b96506020880135955060408801356001600160401b0381111561148857600080fd5b6114948a828b016113fa565b989b979a50986060810135976080820135975060a09091013595509350505050565b6000602082840312156114c857600080fd5b81356001600160e01b0319811681146107cb57600080fd5b60008060008060008060a087890312156114f957600080fd5b611502876113de565b95506020870135945060408701356001600160401b0381111561152457600080fd5b61153089828a016113fa565b979a9699509760608101359660809091013595509350505050565b60006020828403121561155d57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b03811182821017156115a2576115a2611564565b604052919050565b600082601f8301126115bb57600080fd5b81356001600160401b038111156115d4576115d4611564565b6115e7601f8201601f191660200161157a565b8181528460208386010111156115fc57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561162f57600080fd5b611638856113de565b9350611646602086016113de565b92506040850135915060608501356001600160401b0381111561166857600080fd5b611674878288016115aa565b91505092959194509250565b6000806040838503121561169357600080fd5b823591506116a3602084016113de565b90509250929050565b60008083601f8401126116be57600080fd5b5081356001600160401b038111156116d557600080fd5b6020830191508360208260051b850101111561143b57600080fd5b600080600080600080600080600060c08a8c03121561170e57600080fd5b89356001600160401b038082111561172557600080fd5b6117318d838e016116ac565b909b50995060208c013591508082111561174a57600080fd5b6117568d838e016116ac565b909950975060408c013591508082111561176f57600080fd5b5061177c8c828d016116ac565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b0312156117bd57600080fd5b88356001600160401b03808211156117d457600080fd5b6117e08c838d016116ac565b909a50985060208b01359150808211156117f957600080fd5b6118058c838d016116ac565b909850965060408b013591508082111561181e57600080fd5b5061182b8b828c016116ac565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261185a57600080fd5b813560206001600160401b0382111561187557611875611564565b8160051b61188482820161157a565b928352848101820192828101908785111561189e57600080fd5b83870192505b848310156118bd578235825291830191908301906118a4565b979650505050505050565b600080600080600060a086880312156118e057600080fd5b6118e9866113de565b94506118f7602087016113de565b935060408601356001600160401b038082111561191357600080fd5b61191f89838a01611849565b9450606088013591508082111561193557600080fd5b61194189838a01611849565b9350608088013591508082111561195757600080fd5b50611964888289016115aa565b9150509295509295909350565b600080600080600060a0868803121561198957600080fd5b611992866113de565b94506119a0602087016113de565b9350604086013592506060860135915060808601356001600160401b038111156119c957600080fd5b611964888289016115aa565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a060408201526000611a2660a0830186886119d5565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201526000611a636060830184866119d5565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611ad857600080fd5b6107cb826113de565b6000808335601e19843603018112611af857600080fd5b8301803591506001600160401b03821115611b1257600080fd5b60200191503681900382131561143b57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b4f57611b4f611b27565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611bd95782840389528135601e19883603018112611b9157600080fd5b870180356001600160401b03811115611ba957600080fd5b803603891315611bb857600080fd5b611bc586828985016119d5565b9a87019a9550505090840190600101611b70565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611c27576001600160a01b03611c12846113de565b16825260209283019290910190600101611bf9565b5083810360208501528881526001600160fb1b03891115611c4757600080fd5b8860051b9150818a602083013781810191505060208101600081526020848303016040850152611c7881888a611b56565b6060850196909652505050608001529695505050505050565b60008219821115611ca457611ca4611b27565b500190565b60005b83811015611cc4578181015183820152602001611cac565b83811115611cd3576000848401525b50505050565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351611d11816017850160208801611ca9565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611d42816028840160208801611ca9565b01602801949350505050565b6020815260008251806020840152611d6d816040850160208701611ca9565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b6000816000190483118215151615611df557611df5611b27565b500290565b600081611e0957611e09611b27565b50600019019056fea2646970667358221220be35042c03cd52cc4d975802efc7798f58a0d2d816f72b63513451f5ef6fbd9d64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -6,6 +6,6 @@ {

"abi": [],
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206960ae7afb91c055739c8257011724756e4ea766fb5436fdcde0055db3f5d99864736f6c63430008030033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212206960ae7afb91c055739c8257011724756e4ea766fb5436fdcde0055db3f5d99864736f6c63430008030033",
"bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203361d5163d1831e2ebf32fbfc15e410a638426196f221a6a1b2affd3ea7d006a64736f6c634300080d0033",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212203361d5163d1831e2ebf32fbfc15e410a638426196f221a6a1b2affd3ea7d006a64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -74,6 +74,6 @@ {

],
"bytecode": "0x60e060405234801561001057600080fd5b506040516107c63803806107c683398101604081905261002f916100c0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160601b0319606093841b81166080529190921b1660a05260c05261011a565b6000806000606084860312156100d4578283fd5b83516100df81610102565b60208501519093506100f081610102565b80925050604084015190509250925092565b6001600160a01b038116811461011757600080fd5b50565b60805160601c60a05160601c60c05161065f61016760003960008181609f015260f0015260008181605301526102a701526000818160ca015281816101820152610285015261065f6000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a9190610592565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610572565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b843b6104c05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104dc91906105aa565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b509150915061052e828286610539565b979650505050505050565b6060831561054857508161040a565b8251156105585782518084602001fd5b8160405162461bcd60e51b815260040161017591906105c6565b600060208284031215610583578081fd5b8151801515811461040a578182fd5b6000602082840312156105a3578081fd5b5051919050565b600082516105bc8184602087016105f9565b9190910192915050565b60006020825282518060208401526105e58160408501602087016105f9565b601f01601f19169190910160400192915050565b60005b838110156106145781810151838201526020016105fc565b83811115610623576000848401525b5050505056fea2646970667358221220134d885e5e48946a982335d7e16a5c3cf0e65a49d0d489c8531b7ff8d5b6ee4f64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a082319060240160206040518083038186803b1580156101e257600080fd5b505afa1580156101f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061021a9190610592565b9050600081116102785760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102cc6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102cf565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610321908490610326565b505050565b600061037b826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103f89092919063ffffffff16565b80519091501561032157808060200190518101906103999190610572565b6103215760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606104078484600085610411565b90505b9392505050565b6060824710156104725760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b843b6104c05760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b600080866001600160a01b031685876040516104dc91906105aa565b60006040518083038185875af1925050503d8060008114610519576040519150601f19603f3d011682016040523d82523d6000602084013e61051e565b606091505b509150915061052e828286610539565b979650505050505050565b6060831561054857508161040a565b8251156105585782518084602001fd5b8160405162461bcd60e51b815260040161017591906105c6565b600060208284031215610583578081fd5b8151801515811461040a578182fd5b6000602082840312156105a3578081fd5b5051919050565b600082516105bc8184602087016105f9565b9190910192915050565b60006020825282518060208401526105e58160408501602087016105f9565b601f01601f19169190910160400192915050565b60005b838110156106145781810151838201526020016105fc565b83811115610623576000848401525b5050505056fea2646970667358221220134d885e5e48946a982335d7e16a5c3cf0e65a49d0d489c8531b7ff8d5b6ee4f64736f6c63430008030033",
"bytecode": "0x60e060405234801561001057600080fd5b506040516107cd3803806107cd83398101604081905261002f916100d0565b42811161009d5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2072656c656173652074696d65206973206260448201527165666f72652063757272656e742074696d6560701b606482015260840160405180910390fd5b6001600160a01b03928316608052911660a05260c052610113565b6001600160a01b03811681146100cd57600080fd5b50565b6000806000606084860312156100e557600080fd5b83516100f0816100b8565b6020850151909350610101816100b8565b80925050604084015190509250925092565b60805160a05160c05161067361015a60003960008181609f015260f00152600081816053015261029801526000818160ca01528181610182015261027601526106736000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156101e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020b919061057c565b9050600081116102695760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102bd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102c0565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610312908490610317565b505050565b600061036c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103ec9092919063ffffffff16565b905080516000148061038d57508080602001905181019061038d9190610595565b6103125760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606103fb8484600085610403565b949350505050565b6060824710156104645760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b600080866001600160a01b0316858760405161048091906105ee565b60006040518083038185875af1925050503d80600081146104bd576040519150601f19603f3d011682016040523d82523d6000602084013e6104c2565b606091505b50915091506104d3878383876104de565b979650505050505050565b6060831561054d578251600003610546576001600160a01b0385163b6105465760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b50816103fb565b6103fb83838151156105625781518083602001fd5b8060405162461bcd60e51b8152600401610175919061060a565b60006020828403121561058e57600080fd5b5051919050565b6000602082840312156105a757600080fd5b815180151581146105b757600080fd5b9392505050565b60005b838110156105d95781810151838201526020016105c1565b838111156105e8576000848401525b50505050565b600082516106008184602087016105be565b9190910192915050565b60208152600082518060208401526106298160408501602087016105be565b601f01601f1916919091016040019291505056fea26469706673582212205de92862faea57b4135f0135ffa10ca4e1f3d7b94176007e5aba2dd62350bece64736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806338af3eed1461005157806386d1a69f14610090578063b91d40011461009a578063fc0c546a146100c8575b600080fd5b7f00000000000000000000000000000000000000000000000000000000000000005b6040516001600160a01b0390911681526020015b60405180910390f35b6100986100ee565b005b6040517f00000000000000000000000000000000000000000000000000000000000000008152602001610087565b7f0000000000000000000000000000000000000000000000000000000000000000610073565b7f000000000000000000000000000000000000000000000000000000000000000042101561017e5760405162461bcd60e51b815260206004820152603260248201527f546f6b656e54696d656c6f636b3a2063757272656e742074696d65206973206260448201527165666f72652072656c656173652074696d6560701b60648201526084015b60405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516370a0823160e01b81523060048201526001600160a01b0391909116906370a0823190602401602060405180830381865afa1580156101e7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020b919061057c565b9050600081116102695760405162461bcd60e51b815260206004820152602360248201527f546f6b656e54696d656c6f636b3a206e6f20746f6b656e7320746f2072656c6560448201526261736560e81b6064820152608401610175565b6102bd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f0000000000000000000000000000000000000000000000000000000000000000836102c0565b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610312908490610317565b505050565b600061036c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166103ec9092919063ffffffff16565b905080516000148061038d57508080602001905181019061038d9190610595565b6103125760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610175565b60606103fb8484600085610403565b949350505050565b6060824710156104645760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610175565b600080866001600160a01b0316858760405161048091906105ee565b60006040518083038185875af1925050503d80600081146104bd576040519150601f19603f3d011682016040523d82523d6000602084013e6104c2565b606091505b50915091506104d3878383876104de565b979650505050505050565b6060831561054d578251600003610546576001600160a01b0385163b6105465760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610175565b50816103fb565b6103fb83838151156105625781518083602001fd5b8060405162461bcd60e51b8152600401610175919061060a565b60006020828403121561058e57600080fd5b5051919050565b6000602082840312156105a757600080fd5b815180151581146105b757600080fd5b9392505050565b60005b838110156105d95781810151838201526020016105c1565b838111156105e8576000848401525b50505050565b600082516106008184602087016105be565b9190910192915050565b60208152600082518060208401526106298160408501602087016105be565b601f01601f1916919091016040019291505056fea26469706673582212205de92862faea57b4135f0135ffa10ca4e1f3d7b94176007e5aba2dd62350bece64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -77,80 +77,10 @@ {

{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "admin_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newAdmin",
"type": "address"
}
],
"name": "changeAdmin",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "implementation",
"outputs": [
{
"internalType": "address",
"name": "implementation_",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
}
],
"name": "upgradeTo",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "newImplementation",
"type": "address"
},
{
"internalType": "bytes",
"name": "data",
"type": "bytes"
}
],
"name": "upgradeToAndCall",
"outputs": [],
"stateMutability": "payable",
"type": "function"
},
{
"stateMutability": "payable",
"type": "receive"
}
],
"bytecode": "0x608060405260405162000f5a38038062000f5a8339810160408190526200002691620004e2565b82816200005560017f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbd62000611565b60008051602062000f13833981519152146200008157634e487b7160e01b600052600160045260246000fd5b6200008f82826000620000ff565b50620000bf905060017fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d610462000611565b60008051602062000ef383398151915214620000eb57634e487b7160e01b600052600160045260246000fd5b620000f6826200013c565b5050506200067a565b6200010a8362000197565b600082511180620001185750805b156200013757620001358383620001d960201b6200026c1760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6200016762000208565b604080516001600160a01b03928316815291841660208301520160405180910390a1620001948162000241565b50565b620001a281620002f6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b606062000201838360405180606001604052806027815260200162000f336027913962000399565b9392505050565b60006200023260008051602062000ef383398151915260001b6200047f60201b620002141760201c565b546001600160a01b0316905090565b6001600160a01b038116620002ac5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b80620002d560008051602062000ef383398151915260001b6200047f60201b620002141760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200030c816200048260201b620002981760201c565b620003705760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620002a3565b80620002d560008051602062000f1383398151915260001b6200047f60201b620002141760201c565b6060620003a68462000482565b620004035760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401620002a3565b600080856001600160a01b031685604051620004209190620005be565b600060405180830381855af49150503d80600081146200045d576040519150601f19603f3d011682016040523d82523d6000602084013e62000462565b606091505b509092509050620004758282866200048c565b9695505050505050565b90565b803b15155b919050565b606083156200049d57508162000201565b825115620004ae5782518084602001fd5b8160405162461bcd60e51b8152600401620002a39190620005dc565b80516001600160a01b03811681146200048757600080fd5b600080600060608486031215620004f7578283fd5b6200050284620004ca565b92506200051260208501620004ca565b60408501519092506001600160401b03808211156200052f578283fd5b818601915086601f83011262000543578283fd5b81518181111562000558576200055862000664565b604051601f8201601f19908116603f0116810190838211818310171562000583576200058362000664565b816040528281528960208487010111156200059c578586fd5b620005af83602083016020880162000635565b80955050505050509250925092565b60008251620005d281846020870162000635565b9190910192915050565b6000602082528251806020840152620005fd81604085016020870162000635565b601f01601f19169190910160400192915050565b6000828210156200063057634e487b7160e01b81526011600452602481fd5b500390565b60005b838110156200065257818101518382015260200162000638565b83811115620001355750506000910152565b634e487b7160e01b600052604160045260246000fd5b610869806200068a6000396000f3fe60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f9565b610118565b61005b610093366004610713565b610164565b3480156100a457600080fd5b506100ad6101da565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f9565b610217565b3480156100f557600080fd5b506100ad610241565b6101066102a2565b610116610111610346565b610355565b565b610120610379565b6001600160a01b0316336001600160a01b0316141561015957610154816040518060200160405280600081525060006103ac565b610161565b6101616100fe565b50565b61016c610379565b6001600160a01b0316336001600160a01b031614156101cd576101c88383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103ac915050565b6101d5565b6101d56100fe565b505050565b60006101e4610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610346565b9050610214565b6102146100fe565b90565b61021f610379565b6001600160a01b0316336001600160a01b0316141561015957610154816103d7565b600061024b610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610379565b6060610291838360405180606001604052806027815260200161080d6027913961042b565b9392505050565b803b15155b919050565b6102aa610379565b6001600160a01b0316336001600160a01b031614156103415760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b610116565b6000610350610506565b905090565b3660008037600080366000845af43d6000803e808015610374573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b6103b58361052e565b6000825111806103c25750805b156101d5576103d1838361026c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610400610379565b604080516001600160a01b03928316815291841660208301520160405180910390a16101618161056e565b606061043684610298565b6104915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610338565b600080856001600160a01b0316856040516104ac9190610791565b600060405180830381855af49150503d80600081146104e7576040519150601f19603f3d011682016040523d82523d6000602084013e6104ec565b606091505b50915091506104fc828286610617565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61039d565b61053781610650565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105d35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610626575081610291565b8251156106365782518084602001fd5b8160405162461bcd60e51b815260040161033891906107ad565b61065981610298565b6106bb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610338565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105f6565b80356001600160a01b038116811461029d57600080fd5b60006020828403121561070a578081fd5b610291826106e2565b600080600060408486031215610727578182fd5b610730846106e2565b9250602084013567ffffffffffffffff8082111561074c578384fd5b818601915086601f83011261075f578384fd5b81358181111561076d578485fd5b87602082850101111561077e578485fd5b6020830194508093505050509250925092565b600082516107a38184602087016107e0565b9190910192915050565b60006020825282518060208401526107cc8160408501602087016107e0565b601f01601f19169190910160400192915050565b60005b838110156107fb5781810151838201526020016107e3565b838111156103d1575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c84c60caa2406e5455fa4e91aeba5f4876e6edfc6083972ffa2dc00cf888999464736f6c63430008030033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106f9565b610118565b61005b610093366004610713565b610164565b3480156100a457600080fd5b506100ad6101da565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106f9565b610217565b3480156100f557600080fd5b506100ad610241565b6101066102a2565b610116610111610346565b610355565b565b610120610379565b6001600160a01b0316336001600160a01b0316141561015957610154816040518060200160405280600081525060006103ac565b610161565b6101616100fe565b50565b61016c610379565b6001600160a01b0316336001600160a01b031614156101cd576101c88383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250600192506103ac915050565b6101d5565b6101d56100fe565b505050565b60006101e4610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610346565b9050610214565b6102146100fe565b90565b61021f610379565b6001600160a01b0316336001600160a01b0316141561015957610154816103d7565b600061024b610379565b6001600160a01b0316336001600160a01b0316141561020c57610205610379565b6060610291838360405180606001604052806027815260200161080d6027913961042b565b9392505050565b803b15155b919050565b6102aa610379565b6001600160a01b0316336001600160a01b031614156103415760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b610116565b6000610350610506565b905090565b3660008037600080366000845af43d6000803e808015610374573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316905090565b6103b58361052e565b6000825111806103c25750805b156101d5576103d1838361026c565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f610400610379565b604080516001600160a01b03928316815291841660208301520160405180910390a16101618161056e565b606061043684610298565b6104915760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610338565b600080856001600160a01b0316856040516104ac9190610791565b600060405180830381855af49150503d80600081146104e7576040519150601f19603f3d011682016040523d82523d6000602084013e6104ec565b606091505b50915091506104fc828286610617565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61039d565b61053781610650565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105d35760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610338565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60608315610626575081610291565b8251156106365782518084602001fd5b8160405162461bcd60e51b815260040161033891906107ad565b61065981610298565b6106bb5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610338565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6105f6565b80356001600160a01b038116811461029d57600080fd5b60006020828403121561070a578081fd5b610291826106e2565b600080600060408486031215610727578182fd5b610730846106e2565b9250602084013567ffffffffffffffff8082111561074c578384fd5b818601915086601f83011261075f578384fd5b81358181111561076d578485fd5b87602082850101111561077e578485fd5b6020830194508093505050509250925092565b600082516107a38184602087016107e0565b9190910192915050565b60006020825282518060208401526107cc8160408501602087016107e0565b601f01601f19169190910160400192915050565b60005b838110156107fb5781810151838201526020016107e3565b838111156103d1575050600091015256fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220c84c60caa2406e5455fa4e91aeba5f4876e6edfc6083972ffa2dc00cf888999464736f6c63430008030033",
"bytecode": "0x608060405260405162000ed038038062000ed08339810160408190526200002691620004a0565b828162000036828260006200004d565b50620000449050826200008a565b505050620005d3565b6200005883620000e5565b600082511180620000665750805b1562000085576200008383836200012760201b620001691760201c565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f620000b562000156565b604080516001600160a01b03928316815291841660208301520160405180910390a1620000e2816200018f565b50565b620000f08162000244565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606200014f838360405180606001604052806027815260200162000ea960279139620002f8565b9392505050565b60006200018060008051602062000e8983398151915260001b6200037760201b620001951760201c565b546001600160a01b0316919050565b6001600160a01b038116620001fa5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b806200022360008051602062000e8983398151915260001b6200037760201b620001951760201c565b80546001600160a01b0319166001600160a01b039290921691909117905550565b6200025a816200037a60201b620001981760201c565b620002be5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401620001f1565b80620002237f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc60001b6200037760201b620001951760201c565b6060600080856001600160a01b03168560405162000317919062000580565b600060405180830381855af49150503d806000811462000354576040519150601f19603f3d011682016040523d82523d6000602084013e62000359565b606091505b5090925090506200036d8683838762000389565b9695505050505050565b90565b6001600160a01b03163b151590565b60608315620003fd578251600003620003f5576001600160a01b0385163b620003f55760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001f1565b508162000409565b62000409838362000411565b949350505050565b815115620004225781518083602001fd5b8060405162461bcd60e51b8152600401620001f191906200059e565b80516001600160a01b03811681146200045657600080fd5b919050565b634e487b7160e01b600052604160045260246000fd5b60005b838110156200048e57818101518382015260200162000474565b83811115620000835750506000910152565b600080600060608486031215620004b657600080fd5b620004c1846200043e565b9250620004d1602085016200043e565b60408501519092506001600160401b0380821115620004ef57600080fd5b818601915086601f8301126200050457600080fd5b8151818111156200051957620005196200045b565b604051601f8201601f19908116603f011681019083821181831017156200054457620005446200045b565b816040528281528960208487010111156200055e57600080fd5b6200057183602083016020880162000471565b80955050505050509250925092565b600082516200059481846020870162000471565b9190910192915050565b6020815260008251806020840152620005bf81604085016020870162000471565b601f01601f19169190910160400192915050565b6108a680620005e36000396000f3fe60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e838360405180606001604052806027815260200161084a6027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107fa565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e9190610816565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b838111156103b45750506000910152565b6000825161080c8184602087016107ce565b9190910192915050565b60208152600082518060208401526108358160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eed753f2d706b2830a4f22c0a254d6bf8195eda4b6811061eb1a5a96d822738c64736f6c634300080d0033b53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564",
"deployedBytecode": "0x60806040523661001357610011610017565b005b6100115b61001f6101a7565b6001600160a01b0316330361015f5760606001600160e01b0319600035166364d3180d60e11b810161005a576100536101da565b9150610157565b63587086bd60e11b6001600160e01b031982160161007a57610053610231565b63070d7c6960e41b6001600160e01b031982160161009a57610053610277565b621eb96f60e61b6001600160e01b03198216016100b9576100536102a8565b63a39f25e560e01b6001600160e01b03198216016100d9576100536102e8565b60405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b815160208301f35b6101676102fc565b565b606061018e838360405180606001604052806027815260200161084a6027913961030c565b9392505050565b90565b6001600160a01b03163b151590565b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b60606101e4610384565b60006101f33660048184610695565b81019061020091906106db565b905061021d8160405180602001604052806000815250600061038f565b505060408051602081019091526000815290565b60606000806102433660048184610695565b810190610250919061070c565b915091506102608282600161038f565b604051806020016040528060008152509250505090565b6060610281610384565b60006102903660048184610695565b81019061029d91906106db565b905061021d816103bb565b60606102b2610384565b60006102bc6101a7565b604080516001600160a01b03831660208201529192500160405160208183030381529060405291505090565b60606102f2610384565b60006102bc610412565b610167610307610412565b610421565b6060600080856001600160a01b03168560405161032991906107fa565b600060405180830381855af49150503d8060008114610364576040519150601f19603f3d011682016040523d82523d6000602084013e610369565b606091505b509150915061037a86838387610445565b9695505050505050565b341561016757600080fd5b610398836104c6565b6000825111806103a55750805b156103b6576103b48383610169565b505b505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103e46101a7565b604080516001600160a01b03928316815291841660208301520160405180910390a161040f81610506565b50565b600061041c6105af565b905090565b3660008037600080366000845af43d6000803e808015610440573d6000f35b3d6000fd5b606083156104b45782516000036104ad576001600160a01b0385163b6104ad5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161014e565b50816104be565b6104be83836105d7565b949350505050565b6104cf81610601565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b03811661056b5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b606482015260840161014e565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6101cb565b8151156105e75781518083602001fd5b8060405162461bcd60e51b815260040161014e9190610816565b6001600160a01b0381163b61066e5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b606482015260840161014e565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc61058e565b600080858511156106a557600080fd5b838611156106b257600080fd5b5050820193919092039150565b80356001600160a01b03811681146106d657600080fd5b919050565b6000602082840312156106ed57600080fd5b61018e826106bf565b634e487b7160e01b600052604160045260246000fd5b6000806040838503121561071f57600080fd5b610728836106bf565b9150602083013567ffffffffffffffff8082111561074557600080fd5b818501915085601f83011261075957600080fd5b81358181111561076b5761076b6106f6565b604051601f8201601f19908116603f01168101908382118183101715610793576107936106f6565b816040528281528860208487010111156107ac57600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b60005b838110156107e95781810151838201526020016107d1565b838111156103b45750506000910152565b6000825161080c8184602087016107ce565b9190910192915050565b60208152600082518060208401526108358160408501602087016107ce565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220eed753f2d706b2830a4f22c0a254d6bf8195eda4b6811061eb1a5a96d822738c64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -109,6 +109,6 @@ {

],
"bytecode": "0x608060405234801561001057600080fd5b5060405161050a38038061050a83398101604081905261002f91610148565b61003833610047565b61004181610097565b50610176565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b61020a1760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b600060208284031215610159578081fd5b81516001600160a01b038116811461016f578182fd5b9392505050565b610385806101856000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ec565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102ec565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061031a565b60405180910390fd5b61010281610210565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061031a565b61016d600061029c565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061031a565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b6102078161029c565b50565b3b151590565b803b61027a5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fd578081fd5b81356001600160a01b0381168114610313578182fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122023e06fae3a6440cc43ae66f62cc2ae6308fa9286f947d76937fc053b66d58b4f64736f6c63430008030033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ec565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f610139565b6000546001600160a01b031661007e565b61006f6100c13660046102ec565b61016f565b6000546001600160a01b031633146100f95760405162461bcd60e51b81526004016100f09061031a565b60405180910390fd5b61010281610210565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000546001600160a01b031633146101635760405162461bcd60e51b81526004016100f09061031a565b61016d600061029c565b565b6000546001600160a01b031633146101995760405162461bcd60e51b81526004016100f09061031a565b6001600160a01b0381166101fe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016100f0565b6102078161029c565b50565b3b151590565b803b61027a5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b60648201526084016100f0565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156102fd578081fd5b81356001600160a01b0381168114610313578182fd5b9392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260408201526060019056fea264697066735822122023e06fae3a6440cc43ae66f62cc2ae6308fa9286f947d76937fc053b66d58b4f64736f6c63430008030033",
"bytecode": "0x608060405234801561001057600080fd5b506040516104e43803806104e483398101604081905261002f91610151565b61003833610047565b61004181610097565b50610181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6100aa8161014260201b6101a01760201c565b6101205760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f60448201527f6e206973206e6f74206120636f6e747261637400000000000000000000000000606482015260840160405180910390fd5b600180546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03163b151590565b60006020828403121561016357600080fd5b81516001600160a01b038116811461017a57600080fd5b9392505050565b610354806101906000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220c868e6c943c1386edda57067da9e52276a92c1cb791ee80f3339462907d8ffa664736f6c634300080d0033",
"deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80633659cfe61461005c5780635c60da1b14610071578063715018a61461009a5780638da5cb5b146100a2578063f2fde38b146100b3575b600080fd5b61006f61006a3660046102ee565b6100c6565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006f61010e565b6000546001600160a01b031661007e565b61006f6100c13660046102ee565b610122565b6100ce6101af565b6100d781610209565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6101166101af565b610120600061029e565b565b61012a6101af565b6001600160a01b0381166101945760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61019d8161029e565b50565b6001600160a01b03163b151590565b6000546001600160a01b031633146101205760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161018b565b6001600160a01b0381163b61027c5760405162461bcd60e51b815260206004820152603360248201527f5570677261646561626c65426561636f6e3a20696d706c656d656e746174696f6044820152721b881a5cc81b9bdd08184818dbdb9d1c9858dd606a1b606482015260840161018b565b600180546001600160a01b0319166001600160a01b0392909216919091179055565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121561030057600080fd5b81356001600160a01b038116811461031757600080fd5b939250505056fea2646970667358221220c868e6c943c1386edda57067da9e52276a92c1cb791ee80f3339462907d8ffa664736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}

@@ -52,2 +52,15 @@ {

{
"inputs": [],
"name": "proxiableUUID",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [

@@ -54,0 +67,0 @@ {

@@ -24,3 +24,3 @@ {

],
"stateMutability": "nonpayable",
"stateMutability": "payable",
"type": "constructor"

@@ -94,2 +94,34 @@ },

],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "releasable",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "token",
"type": "address"
}
],
"name": "release",

@@ -200,6 +232,6 @@ "outputs": [],

],
"bytecode": "0x60e060405234801561001057600080fd5b50604051610c86380380610c8683398101604081905261002f916100ec565b6001600160a01b03831661009c5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b60609290921b6001600160601b03191660805260c090811b6001600160c01b031990811660a05291811b909116905261013b565b80516001600160401b03811681146100e757600080fd5b919050565b600080600060608486031215610100578283fd5b83516001600160a01b0381168114610116578384fd5b9250610124602085016100d0565b9150610132604085016100d0565b90509250925092565b60805160601c60a05160c01c60c05160c01c610af861018e6000396000818160d80152818161047c01526104d101526000610434015260008181610142015281816102ca01526104010152610af86000f3fe60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57610091565b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857610091565b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b13660046109a5565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610921565b610227565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461093b565b6102f3565b34801561019857600080fd5b5061012661039a565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610921565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610429565b600061021f61020f60005490565b6102199047610a0e565b83610457565b90505b919050565b6001600160a01b03811660009081526001602052604081205461024a83426102f3565b6102549190610a65565b6001600160a01b038316600090815260016020526040812080549293508392909190610281908490610a0e565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ef827f000000000000000000000000000000000000000000000000000000000000000083610531565b5050565b6001600160a01b038216600090815260016020526040812054610391906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034f57600080fd5b505afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061098d565b6102199190610a0e565b90505b92915050565b600080546103a742610201565b6103b19190610a65565b9050806000808282546103c49190610a0e565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104267f000000000000000000000000000000000000000000000000000000000000000082610588565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b6000610461610429565b8267ffffffffffffffff16101561047a57506000610394565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104ad610429565b6104b79190610a0e565b8267ffffffffffffffff1611156104cf575081610394565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16610502610429565b6105169067ffffffffffffffff8516610a65565b6105209085610a46565b61052a9190610a26565b9050610394565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105839084906106a6565b505050565b804710156105dd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461062a576040519150601f19603f3d011682016040523d82523d6000602084013e61062f565b606091505b50509050806105835760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d4565b60006106fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107789092919063ffffffff16565b8051909150156105835780806020019051810190610719919061096d565b6105835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d4565b60606107878484600085610791565b90505b9392505050565b6060824710156107f25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d4565b843b6108405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d4565b600080866001600160a01b0316858760405161085c91906109bf565b60006040518083038185875af1925050503d8060008114610899576040519150601f19603f3d011682016040523d82523d6000602084013e61089e565b606091505b50915091506108ae8282866108b9565b979650505050505050565b606083156108c857508161078a565b8251156108d85782518084602001fd5b8160405162461bcd60e51b81526004016105d491906109db565b80356001600160a01b038116811461022257600080fd5b803567ffffffffffffffff8116811461022257600080fd5b600060208284031215610932578081fd5b610391826108f2565b6000806040838503121561094d578081fd5b610956836108f2565b915061096460208401610909565b90509250929050565b60006020828403121561097e578081fd5b8151801515811461078a578182fd5b60006020828403121561099e578081fd5b5051919050565b6000602082840312156109b6578081fd5b61039182610909565b600082516109d1818460208701610a7c565b9190910192915050565b60006020825282518060208401526109fa816040850160208701610a7c565b601f01601f19169190910160400192915050565b60008219821115610a2157610a21610aac565b500190565b600082610a4157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610a6057610a60610aac565b500290565b600082821015610a7757610a77610aac565b500390565b60005b83811015610a97578181015183820152602001610a7f565b83811115610aa6576000848401525b50505050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212200b22c9d53330866559211c3a2e7cc0af532123c7bb743d1667d9dfe8410469fb64736f6c63430008030033",
"deployedBytecode": "0x60806040526004361061008a5760003560e01c8063810ec23b11610059578063810ec23b1461016c57806386d1a69f1461018c57806396132521146101a15780639852595c146101b6578063be9a6555146101ec57610091565b80630a17b06b146100965780630fb5a6b4146100c9578063191655871461010657806338af3eed1461012857610091565b3661009157005b600080fd5b3480156100a257600080fd5b506100b66100b13660046109a5565b610201565b6040519081526020015b60405180910390f35b3480156100d557600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100b6565b34801561011257600080fd5b50610126610121366004610921565b610227565b005b34801561013457600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100c0565b34801561017857600080fd5b506100b661018736600461093b565b6102f3565b34801561019857600080fd5b5061012661039a565b3480156101ad57600080fd5b506000546100b6565b3480156101c257600080fd5b506100b66101d1366004610921565b6001600160a01b031660009081526001602052604090205490565b3480156101f857600080fd5b506100b6610429565b600061021f61020f60005490565b6102199047610a0e565b83610457565b90505b919050565b6001600160a01b03811660009081526001602052604081205461024a83426102f3565b6102549190610a65565b6001600160a01b038316600090815260016020526040812080549293508392909190610281908490610a0e565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a26102ef827f000000000000000000000000000000000000000000000000000000000000000083610531565b5050565b6001600160a01b038216600090815260016020526040812054610391906040516370a0823160e01b81523060048201526001600160a01b038616906370a082319060240160206040518083038186803b15801561034f57600080fd5b505afa158015610363573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610387919061098d565b6102199190610a0e565b90505b92915050565b600080546103a742610201565b6103b19190610a65565b9050806000808282546103c49190610a0e565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a16104267f000000000000000000000000000000000000000000000000000000000000000082610588565b50565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b6000610461610429565b8267ffffffffffffffff16101561047a57506000610394565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104ad610429565b6104b79190610a0e565b8267ffffffffffffffff1611156104cf575081610394565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff16610502610429565b6105169067ffffffffffffffff8516610a65565b6105209085610a46565b61052a9190610a26565b9050610394565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105839084906106a6565b505050565b804710156105dd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461062a576040519150601f19603f3d011682016040523d82523d6000602084013e61062f565b606091505b50509050806105835760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d6179206861766520726576657274656400000000000060648201526084016105d4565b60006106fb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107789092919063ffffffff16565b8051909150156105835780806020019051810190610719919061096d565b6105835760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105d4565b60606107878484600085610791565b90505b9392505050565b6060824710156107f25760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016105d4565b843b6108405760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016105d4565b600080866001600160a01b0316858760405161085c91906109bf565b60006040518083038185875af1925050503d8060008114610899576040519150601f19603f3d011682016040523d82523d6000602084013e61089e565b606091505b50915091506108ae8282866108b9565b979650505050505050565b606083156108c857508161078a565b8251156108d85782518084602001fd5b8160405162461bcd60e51b81526004016105d491906109db565b80356001600160a01b038116811461022257600080fd5b803567ffffffffffffffff8116811461022257600080fd5b600060208284031215610932578081fd5b610391826108f2565b6000806040838503121561094d578081fd5b610956836108f2565b915061096460208401610909565b90509250929050565b60006020828403121561097e578081fd5b8151801515811461078a578182fd5b60006020828403121561099e578081fd5b5051919050565b6000602082840312156109b6578081fd5b61039182610909565b600082516109d1818460208701610a7c565b9190910192915050565b60006020825282518060208401526109fa816040850160208701610a7c565b601f01601f19169190910160400192915050565b60008219821115610a2157610a21610aac565b500190565b600082610a4157634e487b7160e01b81526012600452602481fd5b500490565b6000816000190483118215151615610a6057610a60610aac565b500290565b600082821015610a7757610a77610aac565b500390565b60005b83811015610a97578181015183820152602001610a7f565b83811115610aa6576000848401525b50505050565b634e487b7160e01b600052601160045260246000fdfea26469706673582212200b22c9d53330866559211c3a2e7cc0af532123c7bb743d1667d9dfe8410469fb64736f6c63430008030033",
"bytecode": "0x60e0604052604051610cdb380380610cdb833981016040819052610022916100d0565b6001600160a01b03831661008f5760405162461bcd60e51b815260206004820152602a60248201527f56657374696e6757616c6c65743a2062656e6566696369617279206973207a65604482015269726f206164647265737360b01b606482015260840160405180910390fd5b6001600160a01b039092166080526001600160401b0390811660a0521660c052610121565b80516001600160401b03811681146100cb57600080fd5b919050565b6000806000606084860312156100e557600080fd5b83516001600160a01b03811681146100fc57600080fd5b925061010a602085016100b4565b9150610118604085016100b4565b90509250925092565b60805160a05160c051610b7061016b6000396000818160ee015281816104ce01526105230152600061046a015260008181610158015281816102f1015261040a0152610b706000f3fe6080604052600436106100a05760003560e01c806386d1a69f1161006457806386d1a69f146101a257806396132521146101b75780639852595c146101cc578063a3f8eace14610202578063be9a655514610222578063fbccedae1461023757600080fd5b80630a17b06b146100ac5780630fb5a6b4146100df578063191655871461011c57806338af3eed1461013e578063810ec23b1461018257600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c736600461097a565b61024c565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100cc565b34801561012857600080fd5b5061013c6101373660046109ac565b610270565b005b34801561014a57600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100d6565b34801561018e57600080fd5b506100cc61019d3660046109c7565b61031a565b3480156101ae57600080fd5b5061013c6103b0565b3480156101c357600080fd5b506000546100cc565b3480156101d857600080fd5b506100cc6101e73660046109ac565b6001600160a01b031660009081526001602052604090205490565b34801561020e57600080fd5b506100cc61021d3660046109ac565b610432565b34801561022e57600080fd5b506100cc61045f565b34801561024357600080fd5b506100cc61048d565b600061026a61025a60005490565b6102649047610a10565b836104a9565b92915050565b600061027b82610432565b6001600160a01b0383166000908152600160205260408120805492935083929091906102a8908490610a10565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a2610316827f000000000000000000000000000000000000000000000000000000000000000083610583565b5050565b6001600160a01b0382166000908152600160205260408120546103a9906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610a28565b6102649190610a10565b9392505050565b60006103ba61048d565b9050806000808282546103cd9190610a10565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a161042f7f0000000000000000000000000000000000000000000000000000000000000000826105da565b50565b6001600160a01b038116600090815260016020526040812054610455834261031a565b61026a9190610a41565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b6000805461049a4261024c565b6104a49190610a41565b905090565b60006104b361045f565b8267ffffffffffffffff1610156104cc5750600061026a565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104ff61045f565b6105099190610a10565b8267ffffffffffffffff16111561052157508161026a565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1661055461045f565b6105689067ffffffffffffffff8516610a41565b6105729085610a58565b61057c9190610a77565b905061026a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105d59084906106f8565b505050565b8047101561062f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461067c576040519150601f19603f3d011682016040523d82523d6000602084013e610681565b606091505b50509050806105d55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610626565b600061074d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107cd9092919063ffffffff16565b905080516000148061076e57508080602001905181019061076e9190610a99565b6105d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b60606107dc84846000856107e4565b949350505050565b6060824710156108455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b031685876040516108619190610aeb565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b50915091506108b4878383876108bf565b979650505050505050565b6060831561092e578251600003610927576001600160a01b0385163b6109275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b50816107dc565b6107dc83838151156109435781518083602001fd5b8060405162461bcd60e51b81526004016106269190610b07565b803567ffffffffffffffff8116811461097557600080fd5b919050565b60006020828403121561098c57600080fd5b6103a98261095d565b80356001600160a01b038116811461097557600080fd5b6000602082840312156109be57600080fd5b6103a982610995565b600080604083850312156109da57600080fd5b6109e383610995565b91506109f16020840161095d565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2357610a236109fa565b500190565b600060208284031215610a3a57600080fd5b5051919050565b600082821015610a5357610a536109fa565b500390565b6000816000190483118215151615610a7257610a726109fa565b500290565b600082610a9457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610aab57600080fd5b815180151581146103a957600080fd5b60005b83811015610ad6578181015183820152602001610abe565b83811115610ae5576000848401525b50505050565b60008251610afd818460208701610abb565b9190910192915050565b6020815260008251806020840152610b26816040850160208701610abb565b601f01601f1916919091016040019291505056fea2646970667358221220b2a9307ea44cd6541774eeeb61f94d2e5fdb3d740dc26fafd3649294080ec99f64736f6c634300080d0033",
"deployedBytecode": "0x6080604052600436106100a05760003560e01c806386d1a69f1161006457806386d1a69f146101a257806396132521146101b75780639852595c146101cc578063a3f8eace14610202578063be9a655514610222578063fbccedae1461023757600080fd5b80630a17b06b146100ac5780630fb5a6b4146100df578063191655871461011c57806338af3eed1461013e578063810ec23b1461018257600080fd5b366100a757005b600080fd5b3480156100b857600080fd5b506100cc6100c736600461097a565b61024c565b6040519081526020015b60405180910390f35b3480156100eb57600080fd5b507f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166100cc565b34801561012857600080fd5b5061013c6101373660046109ac565b610270565b005b34801561014a57600080fd5b506040516001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681526020016100d6565b34801561018e57600080fd5b506100cc61019d3660046109c7565b61031a565b3480156101ae57600080fd5b5061013c6103b0565b3480156101c357600080fd5b506000546100cc565b3480156101d857600080fd5b506100cc6101e73660046109ac565b6001600160a01b031660009081526001602052604090205490565b34801561020e57600080fd5b506100cc61021d3660046109ac565b610432565b34801561022e57600080fd5b506100cc61045f565b34801561024357600080fd5b506100cc61048d565b600061026a61025a60005490565b6102649047610a10565b836104a9565b92915050565b600061027b82610432565b6001600160a01b0383166000908152600160205260408120805492935083929091906102a8908490610a10565b90915550506040518181526001600160a01b038316907fc0e523490dd523c33b1878c9eb14ff46991e3f5b2cd33710918618f2a39cba1b9060200160405180910390a2610316827f000000000000000000000000000000000000000000000000000000000000000083610583565b5050565b6001600160a01b0382166000908152600160205260408120546103a9906040516370a0823160e01b81523060048201526001600160a01b038616906370a0823190602401602060405180830381865afa15801561037b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061039f9190610a28565b6102649190610a10565b9392505050565b60006103ba61048d565b9050806000808282546103cd9190610a10565b90915550506040518181527fda9d4e5f101b8b9b1c5b76d0c5a9f7923571acfc02376aa076b75a8c080c956b9060200160405180910390a161042f7f0000000000000000000000000000000000000000000000000000000000000000826105da565b50565b6001600160a01b038116600090815260016020526040812054610455834261031a565b61026a9190610a41565b67ffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690565b6000805461049a4261024c565b6104a49190610a41565b905090565b60006104b361045f565b8267ffffffffffffffff1610156104cc5750600061026a565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff166104ff61045f565b6105099190610a10565b8267ffffffffffffffff16111561052157508161026a565b7f000000000000000000000000000000000000000000000000000000000000000067ffffffffffffffff1661055461045f565b6105689067ffffffffffffffff8516610a41565b6105729085610a58565b61057c9190610a77565b905061026a565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526105d59084906106f8565b505050565b8047101561062f5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e636500000060448201526064015b60405180910390fd5b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811461067c576040519150601f19603f3d011682016040523d82523d6000602084013e610681565b606091505b50509050806105d55760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610626565b600061074d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166107cd9092919063ffffffff16565b905080516000148061076e57508080602001905181019061076e9190610a99565b6105d55760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610626565b60606107dc84846000856107e4565b949350505050565b6060824710156108455760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610626565b600080866001600160a01b031685876040516108619190610aeb565b60006040518083038185875af1925050503d806000811461089e576040519150601f19603f3d011682016040523d82523d6000602084013e6108a3565b606091505b50915091506108b4878383876108bf565b979650505050505050565b6060831561092e578251600003610927576001600160a01b0385163b6109275760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610626565b50816107dc565b6107dc83838151156109435781518083602001fd5b8060405162461bcd60e51b81526004016106269190610b07565b803567ffffffffffffffff8116811461097557600080fd5b919050565b60006020828403121561098c57600080fd5b6103a98261095d565b80356001600160a01b038116811461097557600080fd5b6000602082840312156109be57600080fd5b6103a982610995565b600080604083850312156109da57600080fd5b6109e383610995565b91506109f16020840161095d565b90509250929050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610a2357610a236109fa565b500190565b600060208284031215610a3a57600080fd5b5051919050565b600082821015610a5357610a536109fa565b500390565b6000816000190483118215151615610a7257610a726109fa565b500290565b600082610a9457634e487b7160e01b600052601260045260246000fd5b500490565b600060208284031215610aab57600080fd5b815180151581146103a957600080fd5b60005b83811015610ad6578181015183820152602001610abe565b83811115610ae5576000848401525b50505050565b60008251610afd818460208701610abb565b9190910192915050565b6020815260008251806020840152610b26816040850160208701610abb565b601f01601f1916919091016040019291505056fea2646970667358221220b2a9307ea44cd6541774eeeb61f94d2e5fdb3d740dc26fafd3649294080ec99f64736f6c634300080d0033",
"linkReferences": {},
"deployedLinkReferences": {}
}
{
"name": "@openzeppelin/contracts",
"description": "Secure Smart Contract library for Solidity",
"version": "4.4.2",
"version": "4.9.3",
"files": [

@@ -6,0 +6,0 @@ "**/*.sol",

# <img src="logo.svg" alt="OpenZeppelin" height="40px">
[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/contracts)
[![NPM Package](https://img.shields.io/npm/v/@openzeppelin/contracts.svg)](https://www.npmjs.org/package/@openzeppelin/contracts)
[![Coverage Status](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts/graph/badge.svg)](https://codecov.io/gh/OpenZeppelin/openzeppelin-contracts)
[![GitPOAPs](https://public-api.gitpoap.io/v1/repo/OpenZeppelin/openzeppelin-contracts/badge)](https://www.gitpoap.io/gh/OpenZeppelin/openzeppelin-contracts)
[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-yellow)](https://docs.openzeppelin.com/contracts)
[![Forum](https://img.shields.io/badge/forum-%F0%9F%92%AC-yellow)](https://docs.openzeppelin.com/contracts)

@@ -15,2 +17,4 @@ **A library for secure smart contract development.** Build on a solid foundation of community-vetted code.

:building_construction: **Want to scale your decentralized application?** Check out [OpenZeppelin Defender](https://openzeppelin.com/defender) — a secure platform for automating and monitoring your operations.
## Overview

@@ -20,8 +24,10 @@

```console
```
$ npm install @openzeppelin/contracts
```
OpenZeppelin Contracts features a [stable API](https://docs.openzeppelin.com/contracts/releases-stability#api-stability), which means your contracts won't break unexpectedly when upgrading to a newer minor version.
OpenZeppelin Contracts features a [stable API](https://docs.openzeppelin.com/contracts/releases-stability#api-stability), which means that your contracts won't break unexpectedly when upgrading to a newer minor version.
An alternative to npm is to use the GitHub repository (`openzeppelin/openzeppelin-contracts`) to retrieve the contracts. When doing this, make sure to specify the tag for a release such as `v4.5.0`, instead of using the `master` branch.
### Usage

@@ -44,16 +50,15 @@

To keep your system secure, you should **always** use the installed code as-is, and neither copy-paste it from online sources, nor modify it yourself. The library is designed so that only the contracts and functions you use are deployed, so you don't need to worry about it needlessly increasing gas costs.
To keep your system secure, you should **always** use the installed code as-is, and neither copy-paste it from online sources nor modify it yourself. The library is designed so that only the contracts and functions you use are deployed, so you don't need to worry about it needlessly increasing gas costs.
## Learn More
The guides in the [docs site](https://docs.openzeppelin.com/contracts) will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides:
The guides in the [documentation site](https://docs.openzeppelin.com/contracts) will teach about different concepts, and how to use the related contracts that OpenZeppelin Contracts provides:
* [Access Control](https://docs.openzeppelin.com/contracts/access-control): decide who can perform each of the actions on your system.
* [Tokens](https://docs.openzeppelin.com/contracts/tokens): create tradeable assets or collectives, and distribute them via [Crowdsales](https://docs.openzeppelin.com/contracts/crowdsales).
* [Gas Station Network](https://docs.openzeppelin.com/contracts/gsn): let your users interact with your contracts without having to pay for gas themselves.
* [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools, including non-overflowing math, signature verification, and trustless paying systems.
* [Utilities](https://docs.openzeppelin.com/contracts/utilities): generic useful tools including non-overflowing math, signature verification, and trustless paying systems.
The [full API](https://docs.openzeppelin.com/contracts/api/token/ERC20) is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts's development in the [community forum](https://forum.openzeppelin.com).
Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/guides), which cover several common use cases and good practices.. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve.
Finally, you may want to take a look at the [guides on our blog](https://blog.openzeppelin.com/guides), which cover several common use cases and good practices. The following articles provide great background reading, though please note that some of the referenced tools have changed, as the tooling in the ecosystem continues to rapidly evolve.

@@ -66,12 +71,14 @@ * [The Hitchhiker’s Guide to Smart Contracts in Ethereum](https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05) will help you get an overview of the various tools available for smart contract development, and help you set up your environment.

This project is maintained by [OpenZeppelin](https://openzeppelin.com), and developed following our high standards for code quality and security. OpenZeppelin Contracts is meant to provide tested and community-audited code, but please use common sense when doing anything that deals with real money! We take no responsibility for your implementation decisions and any security problems you might experience.
This project is maintained by [OpenZeppelin](https://openzeppelin.com) with the goal of providing a secure and reliable library of smart contract components for the ecosystem. We address security through risk management in various areas such as engineering and open source best practices, scoping and API design, multi-layered review processes, and incident response preparedness.
The core development principles and strategies that OpenZeppelin Contracts is based on include: security in depth, simple and modular code, clarity-driven naming conventions, comprehensive unit testing, pre-and-post-condition sanity checks, code consistency, and regular audits.
The security policy is detailed in [`SECURITY.md`](./SECURITY.md), and specifies how you can report security vulnerabilities, which versions will receive security patches, and how to stay informed about them. We run a [bug bounty program on Immunefi](https://immunefi.com/bounty/openzeppelin) to reward the responsible disclosure of vulnerabilities.
The latest audit was done on October 2018 on version 2.0.0.
The engineering guidelines we follow to promote project quality can be found in [`GUIDELINES.md`](./GUIDELINES.md).
Please report any security issues you find via our [bug bounty program on Immunefi](https://www.immunefi.com/bounty/openzeppelin) or directly to security@openzeppelin.org.
Past audits can be found in [`audits/`](./audits).
Critical bug fixes will be backported to past major releases.
Smart contracts are a nascent technology and carry a high level of technical risk and uncertainty. Although OpenZeppelin is well known for its security audits, using OpenZeppelin Contracts is not a substitute for a security audit.
OpenZeppelin Contracts is made available under the MIT License, which disclaims all warranties in relation to the project and which limits the liability of those that contribute and maintain the project, including OpenZeppelin. As set out further in the Terms, you acknowledge that you are solely responsible for any use of OpenZeppelin Contracts and you assume all risks associated with any such use.
## Contribute

@@ -84,1 +91,5 @@

OpenZeppelin Contracts is released under the [MIT License](LICENSE).
## Legal
Your use of this Project is governed by the terms found at www.openzeppelin.com/tos (the "Terms").

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc