[ { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "BalanceTransfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "target", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "indexed": true, "internalType": "address", "name": "pool", "type": "address" }, { "indexed": false, "internalType": "address", "name": "treasury", "type": "address" }, { "indexed": false, "internalType": "address", "name": "incentivesController", "type": "address" }, { "indexed": false, "internalType": "uint8", "name": "aTokenDecimals", "type": "uint8" }, { "indexed": false, "internalType": "string", "name": "aTokenName", "type": "string" }, { "indexed": false, "internalType": "string", "name": "aTokenSymbol", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "ATOKEN_REVISION", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "EIP712_REVISION", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "PERMIT_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "POOL", "outputs": [ { "internalType": "contract ILendingPool", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "RESERVE_TREASURY_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "UNDERLYING_ASSET_ADDRESS", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "_nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "address", "name": "receiverOfUnderlying", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "burn", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getAssetPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getIncentivesController", "outputs": [ { "internalType": "contract IAaveIncentivesController", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "getScaledUserBalanceAndSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "handleRepayment", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "contract ILendingPool", "name": "pool", "type": "address" }, { "internalType": "address", "name": "treasury", "type": "address" }, { "internalType": "address", "name": "underlyingAsset", "type": "address" }, { "internalType": "contract IAaveIncentivesController", "name": "incentivesController", "type": "address" }, { "internalType": "uint8", "name": "aTokenDecimals", "type": "uint8" }, { "internalType": "string", "name": "aTokenName", "type": "string" }, { "internalType": "string", "name": "aTokenSymbol", "type": "string" }, { "internalType": "bytes", "name": "params", "type": "bytes" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "index", "type": "uint256" } ], "name": "mintToTreasury", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "scaledBalanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "scaledTotalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferOnLiquidation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "target", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferUnderlyingTo", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" } ]
6080604052600080553480156200001557600080fd5b50604080518082018252600b8082526a105513d2d15397d253541360aa1b60208084018281528551808701909652928552840152815191929160009162000060916037919062000094565b5081516200007690603890602085019062000094565b506039805460ff191660ff9290921691909117905550620001309050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620000d757805160ff191683800117855562000107565b8280016001018555821562000107579182015b8281111562000107578251825591602001919060010190620000ea565b506200011592915062000119565b5090565b5b808211156200011557600081556001016200011a565b6129e180620001406000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c806375d264131161010f578063b16a19de116100a2578063d7020d0a11610071578063d7020d0a14610706578063dd62ed3e14610742578063e54f088014610770578063f866c31914610778576101f0565b8063b16a19de1461067f578063b1bf962d14610687578063b9844d8d1461068f578063d505accf146106b5576101f0565b806395d89b41116100de57806395d89b4114610617578063a457c2d71461061f578063a9059cbb1461064b578063ae16733514610677576101f0565b806375d26413146105b857806378160376146105c05780637df5bd3b146105c857806388dd91a1146105eb576101f0565b806323b872dd11610187578063395093511161015657806339509351146105165780634efecaa51461054257806370a082311461056e5780637535d24614610594576101f0565b806323b872dd146104b257806330adf81f146104e8578063313ce567146104f05780633644e5151461050e576101f0565b8063156e29f6116101c3578063156e29f61461030b57806318160ddd1461033d578063183fb413146103455780631da24f3e1461048c576101f0565b806306fdde03146101f5578063095ea7b3146102725780630afbcdc9146102b25780630bd7ad3b146102f1575b600080fd5b6101fd6107ae565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561023757818101518382015260200161021f565b50505050905090810190601f1680156102645780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61029e6004803603604081101561028857600080fd5b506001600160a01b038135169060200135610845565b604080519115158252519081900360200190f35b6102d8600480360360208110156102c857600080fd5b50356001600160a01b0316610863565b6040805192835260208301919091528051918290030190f35b6102f9610880565b60408051918252519081900360200190f35b61029e6004803603606081101561032157600080fd5b506001600160a01b038135169060208101359060400135610885565b6102f9610a58565b61048a600480360361010081101561035c57600080fd5b6001600160a01b038235811692602081013582169260408201358316926060830135169160ff6080820135169181019060c0810160a08201356401000000008111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460018302840111640100000000831117156103db57600080fd5b9193909290916020810190356401000000008111156103f957600080fd5b82018360208201111561040b57600080fd5b8035906020019184600183028401116401000000008311171561042d57600080fd5b91939092909160208101903564010000000081111561044b57600080fd5b82018360208201111561045d57600080fd5b8035906020019184600183028401116401000000008311171561047f57600080fd5b509092509050610b06565b005b6102f9600480360360208110156104a257600080fd5b50356001600160a01b0316610e83565b61029e600480360360608110156104c857600080fd5b506001600160a01b03813581169160208101359091169060400135610e8e565b6102f9610f4e565b6104f8610f72565b6040805160ff9092168252519081900360200190f35b6102f9610f7b565b61029e6004803603604081101561052c57600080fd5b506001600160a01b038135169060200135610f81565b6102f96004803603604081101561055857600080fd5b506001600160a01b038135169060200135610fcf565b6102f96004803603602081101561058457600080fd5b50356001600160a01b031661107a565b61059c61110f565b604080516001600160a01b039092168252519081900360200190f35b61059c611123565b6101fd611132565b61048a600480360360408110156105de57600080fd5b508035906020013561114f565b61048a6004803603604081101561060157600080fd5b506001600160a01b03813516906020013561127b565b6101fd61130a565b61029e6004803603604081101561063557600080fd5b506001600160a01b03813516906020013561136b565b61029e6004803603604081101561066157600080fd5b506001600160a01b0381351690602001356113d3565b61059c611430565b61059c61143f565b6102f961144e565b6102f9600480360360208110156106a557600080fd5b50356001600160a01b0316611458565b61048a600480360360e08110156106cb57600080fd5b506001600160a01b03813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c0013561146a565b61048a6004803603608081101561071c57600080fd5b506001600160a01b038135811691602081013590911690604081013590606001356116b1565b6102f96004803603604081101561075857600080fd5b506001600160a01b038135811691602001351661185b565b6102f9611886565b61048a6004803603606081101561078e57600080fd5b506001600160a01b038135811691602081013590911690604001356119f8565b60378054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b820191906000526020600020905b81548152906001019060200180831161081d57829003601f168201915b505050505090505b90565b6000610859610852611ace565b8484611ad2565b5060015b92915050565b60008061086f83611bbe565b610877611bd9565b91509150915091565b600781565b60395460009061010090046001600160a01b03166108a1611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061094f5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156109145781810151838201526020016108fc565b50505050905090810190601f1680156109415780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600061095b85611bbe565b905060006109698585611bdf565b6040805180820190915260028152611a9b60f11b6020820152909150816109d15760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b506109dc8682611ce6565b6040805186815290516001600160a01b038816916000916000805160206128d38339815191529181900360200190a3604080518681526020810186905281516001600160a01b038916927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25015949350505050565b600080610a63611bd9565b905080610a74576000915050610842565b603954603a546040805163d15e005360e01b81526001600160a01b0392831660048201529051610b009361010090049092169163d15e005391602480820192602092909190829003018186803b158015610acd57600080fd5b505afa158015610ae1573d6000803e3d6000fd5b505050506040513d6020811015610af757600080fd5b50518290611e42565b91505090565b6000610b10611f00565b60015490915060ff1680610b275750610b27611f05565b80610b33575060005481115b610b6e5760405162461bcd60e51b815260040180806020018281038252602e8152602001806128a5602e913960400191505060405180910390fd5b60015460ff16158015610b8d576001805460ff19168117905560008290555b60004690507f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f89896040518083838082843780830192505050925050506040518091039020604051806040016040528060018152602001603160f81b81525080519060200120833060405160200180868152602001858152602001848152602001838152602001826001600160a01b031681526020019550505050505060405160208183030381529060405280519060200120603c81905550610c8589898080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f0b92505050565b610cc487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250611f1e92505050565b610ccd8a611f31565b8d603960016101000a8154816001600160a01b0302191690836001600160a01b031602179055508c603d60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508b603a60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508a603e60006101000a8154816001600160a01b0302191690836001600160a01b031602179055508d6001600160a01b03168c6001600160a01b03167fb19e051f8af41150ccccb3fc2c2d8d15f4a4cf434f32a559ba75fe73d6eea20b8f8e8e8e8e8e8e8e8e604051808a6001600160a01b03168152602001896001600160a01b031681526020018860ff16815260200180602001806020018060200184810384528a8a82818152602001925080828437600083820152601f01601f191690910185810384528881526020019050888880828437600083820152601f01601f191690910185810383528681526020019050868680828437600083820152604051601f909101601f19169092018290039e50909c50505050505050505050505050a3508015610e74576001805460ff191690555b50505050505050505050505050565b600061085d82611bbe565b6000610e9b848484611f47565b610f0b84610ea7611ace565b610f068560405180606001604052806028815260200161287d602891396001600160a01b038a16600090815260356020526040812090610ee5611ace565b6001600160a01b031681526020810191909152604001600020549190611f54565b611ad2565b826001600160a01b0316846001600160a01b03166000805160206128d3833981519152846040518082815260200191505060405180910390a35060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60395460ff1690565b603c5481565b6000610859610f8e611ace565b84610f068560356000610f9f611ace565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611fae565b60395460009061010090046001600160a01b0316610feb611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061105c5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b50603a54611074906001600160a01b0316848461200f565b50919050565b603954603a546040805163d15e005360e01b81526001600160a01b039283166004820152905160009361085d93610100909104169163d15e0053916024808301926020929190829003018186803b1580156110d457600080fd5b505afa1580156110e8573d6000803e3d6000fd5b505050506040513d60208110156110fe57600080fd5b505161110984611bbe565b90611e42565b60395461010090046001600160a01b031690565b600061112d612061565b905090565b604051806040016040528060018152602001603160f81b81525081565b60395461010090046001600160a01b0316611168611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906111d95760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b50816111e457611277565b603d546001600160a01b0316611203816111fe8585611bdf565b611ce6565b6040805184815290516001600160a01b038316916000916000805160206128d38339815191529181900360200190a3604080518481526020810184905281516001600160a01b038416927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a2505b5050565b60395461010090046001600160a01b0316611294611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b815250906113055760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b505050565b60388054604080516020601f600260001961010060018816150201909516949094049384018190048102820181019092528281526060939092909183018282801561083a5780601f1061080f5761010080835404028352916020019161083a565b6000610859611378611ace565b84610f068560405180606001604052806025815260200161298760259139603560006113a2611ace565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611f54565b60006113e76113e0611ace565b8484611f47565b826001600160a01b03166113f9611ace565b6001600160a01b03166000805160206128d3833981519152846040518082815260200191505060405180910390a350600192915050565b603d546001600160a01b031690565b603a546001600160a01b031690565b600061112d611bd9565b603b6020526000908152604090205481565b6001600160a01b0387166114b5576040805162461bcd60e51b815260206004820152600d60248201526c24a72b20a624a22fa7aba722a960991b604482015290519081900360640190fd5b834211156114ff576040805162461bcd60e51b815260206004820152601260248201527124a72b20a624a22fa2ac2824a920aa24a7a760711b604482015290519081900360640190fd5b6001600160a01b038088166000818152603b6020908152604080832054603c5482517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958c166060860152608085018b905260a0850181905260c08086018b90528251808703909101815260e08601835280519084012061190160f01b6101008701526101028601969096526101228086019690965281518086039096018652610142850180835286519684019690962093909552610162840180825283905260ff88166101828501526101a284018790526101c284018690525191926001926101e28083019392601f198301929081900390910190855afa158015611614573d6000803e3d6000fd5b505050602060405103516001600160a01b0316896001600160a01b031614611677576040805162461bcd60e51b8152602060048201526011602482015270494e56414c49445f5349474e415455524560781b604482015290519081900360640190fd5b611682826001611fae565b6001600160a01b038a166000908152603b60205260409020556116a6898989611ad2565b505050505050505050565b60395461010090046001600160a01b03166116ca611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b8152509061173b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b5060006117488383611bdf565b60408051808201909152600281526106a760f31b6020820152909150816117b05760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b506117bb8582612070565b603a546117d2906001600160a01b0316858561200f565b6040805184815290516000916001600160a01b038816916000805160206128d38339815191529181900360200190a3836001600160a01b0316856001600160a01b03167f5d624aa9c148153ab3446c1b154f660ee7701e549fe9b62dab7171b1c80e6fa28585604051808381526020018281526020019250505060405180910390a35050505050565b6001600160a01b03918216600090815260356020908152604080832093909416825291909152205490565b600080603960019054906101000a90046001600160a01b03166001600160a01b031663fe65acfe6040518163ffffffff1660e01b815260040160206040518083038186803b1580156118d757600080fd5b505afa1580156118eb573d6000803e3d6000fd5b505050506040513d602081101561190157600080fd5b505160408051631f94a27560e31b815290519192506000916001600160a01b0384169163fca513a8916004808301926020929190829003018186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d602081101561197357600080fd5b5051603a546040805163b3596f0760e01b81526001600160a01b03928316600482015290519293509083169163b3596f0791602480820192602092909190829003018186803b1580156119c557600080fd5b505afa1580156119d9573d6000803e3d6000fd5b505050506040513d60208110156119ef57600080fd5b50519250505090565b60395461010090046001600160a01b0316611a11611ace565b6001600160a01b03161460405180604001604052806002815260200161323960f01b81525090611a825760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b50611a908383836000612119565b816001600160a01b0316836001600160a01b03166000805160206128d3833981519152836040518082815260200191505060405180910390a3505050565b3390565b6001600160a01b038316611b175760405162461bcd60e51b81526004018080602001828103825260248152602001806129396024913960400191505060405180910390fd5b6001600160a01b038216611b5c5760405162461bcd60e51b81526004018080602001828103825260228152602001806128356022913960400191505060405180910390fd5b6001600160a01b03808416600081815260356020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b031660009081526034602052604090205490565b60365490565b604080518082019091526002815261035360f41b602082015260009082611c475760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b5060408051808201909152600280825261068760f31b60208301528304906b033b2e3c9fd0803ce8000000821904851115611cc35760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b5082816b033b2e3c9fd0803ce800000086020181611cdd57fe5b04949350505050565b6001600160a01b038216611d41576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b611d4d60008383611305565b603654600090611d5d9083611fae565b60368190556001600160a01b03841660009081526034602052604081205491925090611d899084611fae565b6001600160a01b0385166000908152603460205260408120829055909150611daf612061565b6001600160a01b031614611e3c57611dc5612061565b6001600160a01b03166331873e2e8583856040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015611e2357600080fd5b505af1158015611e37573d6000803e3d6000fd5b505050505b50505050565b6000821580611e4f575081155b15611e5c5750600061085d565b816b019d971e4fe8401e740000001981611e7257fe5b0483111560405180604001604052806002815260200161068760f31b81525090611edd5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b50506b033b2e3c9fd0803ce800000091026b019d971e4fe8401e74000000010490565b600790565b303b1590565b805161127790603790602084019061275c565b805161127790603890602084019061275c565b6039805460ff191660ff92909216919091179055565b6113058383836001612119565b60008184841115611fa65760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156109145781810151838201526020016108fc565b505050900390565b600082820183811015612008576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526113059084906122c8565b603e546001600160a01b031690565b6001600160a01b0382166120b55760405162461bcd60e51b81526004018080602001828103825260218152602001806128f36021913960400191505060405180910390fd5b6120c182600083611305565b6036546000906120d19083612480565b9050806036819055506000611d8983604051806060016040528060228152602001612813602291396001600160a01b0387166000908152603460205260409020549190611f54565b603a546039546040805163d15e005360e01b81526001600160a01b03938416600482018190529151919361010090930490921691600091839163d15e0053916024808301926020929190829003018186803b15801561217757600080fd5b505afa15801561218b573d6000803e3d6000fd5b505050506040513d60208110156121a157600080fd5b5051905060006121b4826111098a611bbe565b905060006121c5836111098a611bbe565b90506121db89896121d68a87611bdf565b6124c2565b851561226a576040805163d5ed393360e01b81526001600160a01b0387811660048301528b811660248301528a81166044830152606482018a90526084820185905260a4820184905291519186169163d5ed39339160c48082019260009290919082900301818387803b15801561225157600080fd5b505af1158015612265573d6000803e3d6000fd5b505050505b876001600160a01b0316896001600160a01b03167f4beccb90f994c31aced7a23b5611020728a23d8ec5cddd1a3e9d97b96fda86668986604051808381526020018281526020019250505060405180910390a3505050505050505050565b6122da826001600160a01b0316612720565b61232b576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106123695780518252601f19909201916020918201910161234a565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123cb576040519150601f19603f3d011682016040523d82523d6000602084013e6123d0565b606091505b509150915081612427576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115611e3c5780806020019051602081101561244357600080fd5b5051611e3c5760405162461bcd60e51b815260040180806020018281038252602a81526020018061295d602a913960400191505060405180910390fd5b600061200883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f54565b6001600160a01b0383166125075760405162461bcd60e51b81526004018080602001828103825260258152602001806129146025913960400191505060405180910390fd5b6001600160a01b03821661254c5760405162461bcd60e51b81526004018080602001828103825260238152602001806127f06023913960400191505060405180910390fd5b612557838383611305565b600061259682604051806060016040528060268152602001612857602691396001600160a01b0387166000908152603460205260409020549190611f54565b6001600160a01b03808616600090815260346020526040808220849055918616815290812054919250906125ca9084611fae565b6001600160a01b03851660009081526034602052604081208290559091506125f0612061565b6001600160a01b03161461271957603654612609612061565b6001600160a01b03166331873e2e8785846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b15801561266757600080fd5b505af115801561267b573d6000803e3d6000fd5b50505050846001600160a01b0316866001600160a01b031614612717576126a0612061565b6001600160a01b03166331873e2e8684846040518463ffffffff1660e01b815260040180846001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156126fe57600080fd5b505af1158015612712573d6000803e3d6000fd5b505050505b505b5050505050565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061275457508115155b949350505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061279d57805160ff19168380011785556127ca565b828001600101855582156127ca579182015b828111156127ca5782518255916020019190600101906127af565b506127d69291506127da565b5090565b5b808211156127d657600081556001016127db56fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e636545524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365436f6e747261637420696e7374616e63652068617320616c7265616479206265656e20696e697469616c697a6564ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef45524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656445524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f3fd147b7b9a11e62c4019e669d42d03e1a9569eee1a4314fa64d437540726764736f6c634300060c0033