[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldAdapter", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newAdapter", "type": "address" } ], "name": "AdapterChanged", "type": "event" }, { "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": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "yield", "type": "uint256" } ], "name": "Claim", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "ClaimedX", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Deposit", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint8", "name": "version", "type": "uint8" } ], "name": "Initialized", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldProvider", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newProvider", "type": "address" } ], "name": "Provider", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "xUnitroller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "unitroller", "type": "address" } ], "name": "UnitrollerChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "assets", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Withdraw", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "xXvs", "type": "address" }, { "indexed": true, "internalType": "address", "name": "xvs", "type": "address" } ], "name": "XVSChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "oldHeritor", "type": "address" }, { "indexed": false, "internalType": "address", "name": "newHeritor", "type": "address" } ], "name": "YieldHeritor", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldMargin", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newMargin", "type": "uint256" } ], "name": "YieldMargin", "type": "event" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "asset", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "adapter", "type": "address" } ], "name": "changeAdapter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_provider", "type": "address" } ], "name": "changeProvider", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_yieldHeritor", "type": "address" } ], "name": "changeYieldHeritor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_yieldMargin", "type": "uint256" } ], "name": "changeYieldMargin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "claimYield", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "convertToAssets", "outputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "convertToShares", "outputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "deposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "getBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getVaultYield", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": "string", "name": "_name", "type": "string" }, { "internalType": "string", "name": "_symbol", "type": "string" }, { "internalType": "uint256", "name": "_yieldMargin", "type": "uint256" }, { "internalType": "address", "name": "_underlying", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "maxMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "maxWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewMint", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "previewRedeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" } ], "name": "previewWithdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "provider", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "ratioAdapter", "outputs": [ { "internalType": "contract IRatioAdapter", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "shares", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "redeem", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalAssets", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "underlyingBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "assets", "type": "uint256" }, { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "withdraw", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "yieldBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldHeritor", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "yieldMargin", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6128d380620000f46000396000f3fe608060405234801561001057600080fd5b506004361061027f5760003560e01c8063796f69aa1161015c578063b460af94116100ce578063cf062f0d11610087578063cf062f0d14610517578063d309ee6014610521578063d905777e14610535578063dd62ed3e14610548578063ef8b30f7146104f1578063f2fde38b1461055b57600080fd5b8063b460af94146104a8578063ba087652146104b6578063bd3a13f6146104c9578063c63d75b6146104dc578063c6e6f592146104f1578063ce96cb771461050457600080fd5b80639c0c1aa5116101205780639c0c1aa51461043e578063a457c2d714610448578063a7f2b6b91461045b578063a9059cbb1461046f578063ae0bcf2b14610482578063b3d7f6b91461049557600080fd5b8063796f69aa146104055780637fed4fde146104185780638da5cb5b1461042057806394bf804d1461042857806395d89b411461043657600080fd5b806338d52e0f116101f557806359356c5c116101b957806359356c5c146103af5780635c975abb146103b95780636b0fc169146103c45780636e553f65146103d757806370a08231146103ea578063715018a6146103fd57600080fd5b806338d52e0f146103705780633950935114610381578063402d267d14610394578063406cf229146103a75780634cdad506146102b457600080fd5b80630a28a477116102475780630a28a4771461031657806312065fe01461032957806318160ddd1461033157806323b872dd146103395780632fc83da91461034c578063313ce5671461036157600080fd5b806301e1d1141461028457806306fdde031461029f57806307a2d13a146102b4578063085d4883146102c7578063095ea7b3146102f3575b600080fd5b61028c61056e565b6040519081526020015b60405180910390f35b6102a761058b565b6040516102969190612109565b61028c6102c236600461213c565b61061d565b61012d546102db906001600160a01b031681565b6040516001600160a01b039091168152602001610296565b610306610301366004612171565b610630565b6040519015158152602001610296565b61028c61032436600461213c565b610648565b61028c610655565b60355461028c565b61030661034736600461219b565b6106de565b61035f61035a36600461213c565b610704565b005b60405160128152602001610296565b6065546001600160a01b03166102db565b61030661038f366004612171565b6107c0565b61028c6103a23660046121d7565b6107e2565b61028c610800565b61028c6101315481565b60c95460ff16610306565b61035f6103d23660046121d7565b61081e565b61028c6103e53660046121f2565b6108e1565b61028c6103f83660046121d7565b610a8c565b61035f610aa7565b61035f6104133660046121d7565b610abb565b61028c610b7e565b6102db610c5c565b61028c61027f3660046121f2565b6102a7610c6b565b61028c61012f5481565b610306610456366004612171565b610c7a565b610132546102db906001600160a01b031681565b61030661047d366004612171565b610d00565b61035f6104903660046121d7565b610d0e565b61028c6104a336600461213c565b610da7565b61028c61027f36600461221e565b61028c6104c436600461221e565b610db4565b61035f6104d73660046122fd565b610f16565b61028c6104ea3660046121d7565b5060001990565b61028c6104ff36600461213c565b6110b6565b61028c6105123660046121d7565b6110c3565b61028c6101305481565b61012e546102db906001600160a01b031681565b61028c6105433660046121d7565b6110d8565b61028c61055636600461237b565b6110e3565b61035f6105693660046121d7565b61110e565b6000610578610b7e565b6101315461058691906123bb565b905090565b60606036805461059a906123d2565b80601f01602080910402602001604051908101604052809291908181526020018280546105c6906123d2565b80156106135780601f106105e857610100808354040283529160200191610613565b820191906000526020600020905b8154815290600101906020018083116105f657829003601f168201915b5050505050905090565b600061062a826000611187565b92915050565b60003361063e81858561124d565b5060019392505050565b600061062a826001611371565b610132546000906001600160a01b0316634d34edc761067c6065546001600160a01b031690565b610131546040518363ffffffff1660e01b815260040161069d92919061240c565b602060405180830381865afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105869190612425565b6000336106ec858285611420565b6106f785858561149a565b60019150505b9392505050565b61070c610c5c565b6001600160a01b0316336001600160a01b03161480610736575061012d546001600160a01b031633145b61075b5760405162461bcd60e51b81526004016107529061243e565b60405180910390fd5b61271081111561077d5760405162461bcd60e51b815260040161075290612482565b61012f81905560408051828152602081018390527f831f5ac7bcbd8b642cad5f182f7ee8f5f009a246d7f8ff3b9fb8b954bd09333591015b60405180910390a150565b60003361063e8185856107d383836110e3565b6107dd91906124c8565b61124d565b60006107ec611656565b6107f757600061062a565b60001992915050565b60008061080b611670565b9050610815610655565b61013055919050565b610826610c5c565b6001600160a01b0316336001600160a01b03161480610850575061012d546001600160a01b031633145b61086c5760405162461bcd60e51b81526004016107529061243e565b6001600160a01b0381166108925760405162461bcd60e51b8152600401610752906124e0565b61012e80546001600160a01b0319166001600160a01b0383169081179091556040517f72e422e44164b4b9a2c7f2ae1e5030741a663796ff09ed493237382a77f0b12e916107b5918490612512565b6000600260fb54036109055760405162461bcd60e51b81526004016107529061252c565b600260fb55610912611722565b61091a610c5c565b6001600160a01b0316336001600160a01b03161480610944575061012d546001600160a01b031633145b6109605760405162461bcd60e51b81526004016107529061243e565b33836109ae5760405162461bcd60e51b815260206004820152601d60248201527f4d61737465725661756c745f56322f696e76616c69642d616d6f756e740000006044820152606401610752565b6001600160a01b0383166109d45760405162461bcd60e51b8152600401610752906124e0565b6109dd816107e2565b841115610a385760405162461bcd60e51b8152602060048201526024808201527f4d61737465725661756c745f56322f6465706f7369742d6d6f72652d7468616e60448201526305adac2f60e31b6064820152608401610752565b610a40611670565b506000610a4c856110b6565b9050610a5a82838784611768565b846101316000828254610a6d91906124c8565b90915550610a7b9050610655565b61013055600160fb55949350505050565b6001600160a01b031660009081526033602052604090205490565b610aaf6117e6565b610ab96000611845565b565b610ac3610c5c565b6001600160a01b0316336001600160a01b03161480610aed575061012d546001600160a01b031633145b610b095760405162461bcd60e51b81526004016107529061243e565b6001600160a01b038116610b2f5760405162461bcd60e51b8152600401610752906124e0565b61012d80546001600160a01b0319166001600160a01b0383169081179091556040517f46d93036bdb5c64c85e1617cd70379b2f7979a3edaa7f8678c3e492d86f12190916107b5918490612512565b600080610b89610655565b9050610130548111610b9d57600091505090565b60006101305482610bae91906123bb565b9050600061271061012f5483610bc49190612563565b610bce9190612598565b610132549091506001600160a01b031663de582eff610bf56065546001600160a01b031690565b836040518363ffffffff1660e01b8152600401610c1392919061240c565b602060405180830381865afa158015610c30573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c549190612425565b935050505090565b6097546001600160a01b031690565b60606037805461059a906123d2565b60003381610c8882866110e3565b905083811015610ce85760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b6064820152608401610752565b610cf5828686840361124d565b506001949350505050565b60003361063e81858561149a565b610d166117e6565b6001600160a01b038116610d3c5760405162461bcd60e51b8152600401610752906124e0565b610132546040517fc3f1d9acbad3d58bdbd12ae988485b64e4247fde6ecb72188ee8e0edaf73ca3e91610d7c916001600160a01b03909116908490612512565b60405180910390a161013280546001600160a01b0319166001600160a01b0392909216919091179055565b600061062a826001611187565b6000600260fb5403610dd85760405162461bcd60e51b81526004016107529061252c565b600260fb55610de5611722565b610ded610c5c565b6001600160a01b0316336001600160a01b03161480610e17575061012d546001600160a01b031633145b610e335760405162461bcd60e51b81526004016107529061243e565b33610e3d836110d8565b851115610e9a5760405162461bcd60e51b815260206004820152602560248201527f4d61737465725661756c745f56322f77697468647261772d6d6f72652d7468616044820152640dc5adac2f60db1b6064820152608401610752565b6001600160a01b038416610ec05760405162461bcd60e51b8152600401610752906124e0565b6000610ecb8661061d565b9050610ed5611670565b50806101316000828254610ee991906123bb565b90915550610ef79050610655565b61013055610f08848681848a611897565b600160fb5595945050505050565b600054610100900460ff1615808015610f365750600054600160ff909116105b80610f505750303b158015610f50575060005460ff166001145b610fb35760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610752565b6000805460ff191660011790558015610fd6576000805461ff0019166101001790555b610fdf82611943565b610fe98585611973565b610ff16119a8565b610ff96119d7565b611001611a06565b6127108311156110235760405162461bcd60e51b815260040161075290612482565b61012f8390556040805160008152602081018590527f831f5ac7bcbd8b642cad5f182f7ee8f5f009a246d7f8ff3b9fb8b954bd093335910160405180910390a160006101305580156110af576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b600061062a826000611371565b600061062a6110d183610a8c565b6000611187565b600061062a82610a8c565b6001600160a01b03918216600090815260346020908152604080832093909416825291909152205490565b6111166117e6565b6001600160a01b03811661117b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610752565b61118481611845565b50565b60008061119360355490565b905080156111b4576111af6111a661056e565b85908386611a35565b611245565b6065546040805163313ce56760e01b81529051611245926001600160a01b03169163313ce5679160048083019260209291908290030181865afa1580156111ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061122391906125ba565b61122e90600a6126c1565b60125b61123c90600a6126c1565b86919086611a35565b949350505050565b6001600160a01b0383166112af5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610752565b6001600160a01b0382166113105760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610752565b6001600160a01b0383811660008181526034602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b60008061137d60355490565b905083158061138a575080155b61139a576111af8161123c61056e565b6112456113a96012600a6126c1565b606560009054906101000a90046001600160a01b03166001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113fc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061123191906125ba565b600061142c84846110e3565b9050600019811461149457818110156114875760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152606401610752565b611494848484840361124d565b50505050565b6001600160a01b0383166114fe5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610752565b6001600160a01b0382166115605760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610752565b6001600160a01b038316600090815260336020526040902054818110156115d85760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610752565b6001600160a01b0380851660009081526033602052604080822085850390559185168152908120805484929061160f9084906124c8565b92505081905550826001600160a01b0316846001600160a01b031660008051602061287e8339815191528460405161164991815260200190565b60405180910390a3611494565b60008061166161056e565b11806105865750506035541590565b60008061167b610b7e565b90506000811161168d57600091505090565b60006116a16065546001600160a01b031690565b61012e549091506116bf906001600160a01b03808416911684611a97565b8161013160008282546116d291906123bb565b909155505061012e546040518381526001600160a01b039091169030907f70eb43c4a8ae8c40502dcf22436c509c28d6ff421cf07c491be56984bd9870689060200160405180910390a350919050565b60c95460ff1615610ab95760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610752565b606554611780906001600160a01b0316853085611aed565b61178a8382611b25565b826001600160a01b0316846001600160a01b03167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516117d8929190918252602082015260400190565b60405180910390a350505050565b336117ef610c5c565b6001600160a01b031614610ab95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610752565b609780546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b826001600160a01b0316856001600160a01b0316146118bb576118bb838683611420565b6118c58382611bf2565b6065546118dc906001600160a01b03168584611a97565b826001600160a01b0316846001600160a01b0316866001600160a01b03167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db8585604051611934929190918252602082015260400190565b60405180910390a45050505050565b600054610100900460ff1661196a5760405162461bcd60e51b8152600401610752906126d0565b61118481611d2e565b600054610100900460ff1661199a5760405162461bcd60e51b8152600401610752906126d0565b6119a48282611d77565b5050565b600054610100900460ff166119cf5760405162461bcd60e51b8152600401610752906126d0565b610ab9611db7565b600054610100900460ff166119fe5760405162461bcd60e51b8152600401610752906126d0565b610ab9611de7565b600054610100900460ff16611a2d5760405162461bcd60e51b8152600401610752906126d0565b610ab9611e1a565b600080611a43868686611e48565b90506001836002811115611a5957611a5961271b565b148015611a76575060008480611a7157611a71612582565b868809115b15611a8957611a866001826124c8565b90505b95945050505050565b505050565b611a928363a9059cbb60e01b8484604051602401611ab692919061240c565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ef7565b6040516001600160a01b03808516602483015283166044820152606481018290526114949085906323b872dd60e01b90608401611ab6565b6001600160a01b038216611b7b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152606401610752565b8060356000828254611b8d91906124c8565b90915550506001600160a01b03821660009081526033602052604081208054839290611bba9084906124c8565b90915550506040518181526001600160a01b0383169060009060008051602061287e8339815191529060200160405180910390a35050565b6001600160a01b038216611c525760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b6064820152608401610752565b6001600160a01b03821660009081526033602052604090205481811015611cc65760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b6064820152608401610752565b6001600160a01b0383166000908152603360205260408120838303905560358054849290611cf59084906123bb565b90915550506040518281526000906001600160a01b0385169060008051602061287e8339815191529060200160405180910390a3505050565b600054610100900460ff16611d555760405162461bcd60e51b8152600401610752906126d0565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff16611d9e5760405162461bcd60e51b8152600401610752906126d0565b6036611daa838261277f565b506037611a92828261277f565b600054610100900460ff16611dde5760405162461bcd60e51b8152600401610752906126d0565b610ab933611845565b600054610100900460ff16611e0e5760405162461bcd60e51b8152600401610752906126d0565b60c9805460ff19169055565b600054610100900460ff16611e415760405162461bcd60e51b8152600401610752906126d0565b600160fb55565b6000808060001985870985870292508281108382030391505080600003611e8257838281611e7857611e78612582565b04925050506106fd565b808411611e8e57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b6000611f4c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611fc99092919063ffffffff16565b805190915015611a925780806020019051810190611f6a919061283f565b611a925760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610752565b60606112458484600085856001600160a01b0385163b61202b5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610752565b600080866001600160a01b031685876040516120479190612861565b60006040518083038185875af1925050503d8060008114612084576040519150601f19603f3d011682016040523d82523d6000602084013e612089565b606091505b50915091506120998282866120a4565b979650505050505050565b606083156120b35750816106fd565b8251156120c35782518084602001fd5b8160405162461bcd60e51b81526004016107529190612109565b60005b838110156120f85781810151838201526020016120e0565b838111156114945750506000910152565b60208152600082518060208401526121288160408501602087016120dd565b601f01601f19169190910160400192915050565b60006020828403121561214e57600080fd5b5035919050565b80356001600160a01b038116811461216c57600080fd5b919050565b6000806040838503121561218457600080fd5b61218d83612155565b946020939093013593505050565b6000806000606084860312156121b057600080fd5b6121b984612155565b92506121c760208501612155565b9150604084013590509250925092565b6000602082840312156121e957600080fd5b6106fd82612155565b6000806040838503121561220557600080fd5b8235915061221560208401612155565b90509250929050565b60008060006060848603121561223357600080fd5b8335925061224360208501612155565b915061225160408501612155565b90509250925092565b634e487b7160e01b600052604160045260246000fd5b600082601f83011261228157600080fd5b813567ffffffffffffffff8082111561229c5761229c61225a565b604051601f8301601f19908116603f011681019082821181831017156122c4576122c461225a565b816040528381528660208588010111156122dd57600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561231357600080fd5b843567ffffffffffffffff8082111561232b57600080fd5b61233788838901612270565b9550602087013591508082111561234d57600080fd5b5061235a87828801612270565b9350506040850135915061237060608601612155565b905092959194509250565b6000806040838503121561238e57600080fd5b61239783612155565b915061221560208401612155565b634e487b7160e01b600052601160045260246000fd5b6000828210156123cd576123cd6123a5565b500390565b600181811c908216806123e657607f821691505b60208210810361240657634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b03929092168252602082015260400190565b60006020828403121561243757600080fd5b5051919050565b60208082526024908201527f4d61737465725661756c745f56322f6e6f742d6f776e65722d6f722d70726f7660408201526334b232b960e11b606082015260800190565b60208082526026908201527f4d61737465725661756c745f56322f73686f756c642d62652d6c6573732d74686040820152650c2dc5adac2f60d31b606082015260800190565b600082198211156124db576124db6123a5565b500190565b6020808252601890820152774d61737465725661756c745f56322f302d6164647265737360401b604082015260600190565b6001600160a01b0392831681529116602082015260400190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600081600019048311821515161561257d5761257d6123a5565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826125b557634e487b7160e01b600052601260045260246000fd5b500490565b6000602082840312156125cc57600080fd5b815160ff811681146106fd57600080fd5b600181815b808511156126185781600019048211156125fe576125fe6123a5565b8085161561260b57918102915b93841c93908002906125e2565b509250929050565b60008261262f5750600161062a565b8161263c5750600061062a565b8160018114612652576002811461265c57612678565b600191505061062a565b60ff84111561266d5761266d6123a5565b50506001821b61062a565b5060208310610133831016604e8410600b841016171561269b575081810a61062a565b6126a583836125dd565b80600019048211156126b9576126b96123a5565b029392505050565b60006106fd60ff841683612620565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b601f821115611a9257600081815260208120601f850160051c810160208610156127585750805b601f850160051c820191505b8181101561277757828155600101612764565b505050505050565b815167ffffffffffffffff8111156127995761279961225a565b6127ad816127a784546123d2565b84612731565b602080601f8311600181146127e257600084156127ca5750858301515b600019600386901b1c1916600185901b178555612777565b600085815260208120601f198616915b82811015612811578886015182559484019460019091019084016127f2565b508582101561282f5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006020828403121561285157600080fd5b815180151581146106fd57600080fd5b600082516128738184602087016120dd565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220ba023c0a89bf3f8a39ecd68e9e714fe97249848051b5da11e2bc971ca8964adc64736f6c634300080f0033