5 txs
13 calls
constructor
constructor(address _management, address _performanceFeeRecipient, address _keeper, address _sms, address _router, address _base)
functions
aprOracle
viewfunction aprOracle() view returns (address)
BASE
viewfunction BASE() view returns (address)
deployments
viewfunction deployments(address) view returns (address)
isDeployedStrategy
viewfunction isDeployedStrategy(address _strategy) view returns (bool)
keeper
viewfunction keeper() view returns (address)
management
viewfunction management() view returns (address)
performanceFeeRecipient
viewfunction performanceFeeRecipient() view returns (address)
ROUTER
viewfunction ROUTER() view returns (address)
SMS
viewfunction SMS() view returns (address)
newMorphoCompounder
nonpayablefunction newMorphoCompounder(address _vault) returns (address)
setAddresses
nonpayablefunction setAddresses(address _management, address _performanceFeeRecipient, address _keeper)
setOracle
nonpayablefunction setOracle(address _oracle)
events
NewMorphoCompounder
event NewMorphoCompounder(address indexed strategy, address indexed asset)
errors
AlreadyDeployed
error AlreadyDeployed(address _strategy)
creation bytecode
0x60e060405234801561000f575f80fd5b50604051620046a9380380620046a98339810160408190526100309161009e565b5f80546001600160a01b03199081166001600160a01b0398891617909155600180548216968816969096179095556002805490951693861693909317909355831660805290821660c0521660a05261010e565b80516001600160a01b0381168114610099575f80fd5b919050565b5f805f805f8060c087890312156100b3575f80fd5b6100bc87610083565b95506100ca60208801610083565b94506100d860408801610083565b93506100e660608801610083565b92506100f460808801610083565b915061010260a08801610083565b90509295509295509295565b60805160a05160c05161455c6200014d5f395f8181610162015261051801525f818161020c015261053901525f818160f60152610660015261455c5ff3fe608060405234801562000010575f80fd5b5060043610620000c0575f3560e01c806388a8d602116200007757806388a8d60214620001b457806394990bd814620001c7578063aae985db14620001db578063aced166114620001f2578063ec342ad01462000206578063ed27f7c9146200022e575f80fd5b80630d00442414620000c4578063111ebcfb14620000f0578063316b3739146200013157806332fe7b26146200015c578063363bf96414620001845780637adbf973146200019d575b5f80fd5b620000db620000d536600462000880565b62000242565b60405190151581526020015b60405180910390f35b620001187f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001620000e7565b620001186200014236600462000880565b60046020525f90815260409020546001600160a01b031681565b620001187f000000000000000000000000000000000000000000000000000000000000000081565b6200019b62000195366004620008a5565b620002ce565b005b6200019b620001ae36600462000880565b62000359565b5f5462000118906001600160a01b031681565b60035462000118906001600160a01b031681565b62000118620001ec36600462000880565b620003c4565b60025462000118906001600160a01b031681565b620001187f000000000000000000000000000000000000000000000000000000000000000081565b60015462000118906001600160a01b031681565b5f80826001600160a01b031663fbfa77cf6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000281573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002a79190620008f4565b6001600160a01b039081165f90815260046020526040902054811693169290921492915050565b5f546001600160a01b031633146200031b5760405162461bcd60e51b815260206004820152600b60248201526a085b585b9859d95b595b9d60aa1b60448201526064015b60405180910390fd5b5f80546001600160a01b039485166001600160a01b031991821617909155600180549385169382169390931790925560028054919093169116179055565b5f546001600160a01b03163314620003a25760405162461bcd60e51b815260206004820152600b60248201526a085b585b9859d95b595b9d60aa1b604482015260640162000312565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038181165f908152600460205260408120549091161562000423576001600160a01b038281165f908152600460208190526040918290205491516329ab51bf60e01b8152919092169181019190915260240162000312565b5f826001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000461573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004879190620008f4565b90505f836001600160a01b03166306fdde036040518163ffffffff1660e01b81526004015f60405180830381865afa158015620004c6573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052620004ef91908101906200094a565b604051602001620005019190620009fe565b60405160208183030381529060405290505f8282867f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000060405162000566906200085a565b6200057695949392919062000a43565b604051809103905ff08015801562000590573d5f803e3d5ffd5b5060015460405163352f8d5160e11b81526001600160a01b039182166004820152919250821690636a5f1aa2906024015f604051808303815f87803b158015620005d8575f80fd5b505af1158015620005eb573d5f803e3d5ffd5b5050600254604051633a43a3f360e11b81526001600160a01b039182166004820152908416925063748747e691506024015f604051808303815f87803b15801562000634575f80fd5b505af115801562000647573d5f803e3d5ffd5b5050604051630d768ce560e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081166004830152841692506335da339491506024015f604051808303815f87803b158015620006ac575f80fd5b505af1158015620006bf573d5f803e3d5ffd5b5050604051636fb4d91560e11b81526202a30060048201526001600160a01b038416925063df69b22a91506024015f604051808303815f87803b15801562000705575f80fd5b505af115801562000718573d5f803e3d5ffd5b5050600354604051632e1c759d60e11b81526001600160a01b0380861660048301529091166024820152731981ad9f44f2ea9add2dc4ad7d075c102c70af929250635c38eb3a91506044015f604051808303815f87803b1580156200077b575f80fd5b505af11580156200078e573d5f803e3d5ffd5b50505f54604051630f629b7960e41b81526001600160a01b039182166004820152908416925063f629b79091506024015f604051808303815f87803b158015620007d6575f80fd5b505af1158015620007e9573d5f803e3d5ffd5b50506040516001600160a01b038087169350841691507f8e90e8c40d92928e8edf3ba6825cfe11cb3f63a203605ee76a2a5529f9f61597905f90a36001600160a01b039485165f90815260046020526040902080546001600160a01b03191695821695909517909455509192915050565b613a898062000a9e83390190565b6001600160a01b03811681146200087d575f80fd5b50565b5f6020828403121562000891575f80fd5b81356200089e8162000868565b9392505050565b5f805f60608486031215620008b8575f80fd5b8335620008c58162000868565b92506020840135620008d78162000868565b91506040840135620008e98162000868565b809150509250925092565b5f6020828403121562000905575f80fd5b81516200089e8162000868565b634e487b7160e01b5f52604160045260245ffd5b5f5b838110156200094257818101518382015260200162000928565b50505f910152565b5f602082840312156200095b575f80fd5b815167ffffffffffffffff8082111562000973575f80fd5b818401915084601f83011262000987575f80fd5b8151818111156200099c576200099c62000912565b604051601f8201601f19908116603f01168101908382118183101715620009c757620009c762000912565b81604052828152876020848701011115620009e0575f80fd5b620009f383602083016020880162000926565b979650505050505050565b66026b7b9383437960cd1b81525f825162000a2181600785016020870162000926565b6a1021b7b6b837bab73232b960a91b6007939091019283015250601201919050565b5f60018060a01b03808816835260a0602084015286518060a085015262000a728160c0860160208b0162000926565b95811660408401529384166060830152509116608082015260c0601f909201601f191601019291505056fe60e06040525f80546227100162ffffff19909116179055600380546001600160a01b031990811673c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2179091556004805490911673e592427a0aece92de3edee1f18e0157c058615641790553480156200006a575f80fd5b5060405162003a8938038062003a898339810160408190526200008d91620006f0565b6001600160a01b0385166080523060a05260405185908590859083908390829082906200010090620000cc90849084903390819081906024016200081c565b60408051601f198184030181529190526020810180516001600160e01b03908116634b839d7360e11b179091526200025016565b5073d377919fa87120584b21279a491f82d5265a139c7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5550505050826001600160a01b0316816001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000183573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001a991906200085e565b6001600160a01b031614620001f35760405162461bcd60e51b815260206004820152600b60248201526a1ddc9bdb99c81d985d5b1d60aa1b60448201526064015b60405180910390fd5b6001600160a01b0380821660c052608051620002139116825f19620002df565b5050600480546001600160a01b039485166001600160a01b031991821617909155600380549390941692169190911790915550620008e492505050565b60605f8073d377919fa87120584b21279a491f82d5265a139c6001600160a01b0316846040516200028291906200087a565b5f60405180830381855af49150503d805f8114620002bc576040519150601f19603f3d011682016040523d82523d5f602084013e620002c1565b606091505b509150915081620002d8576040513d805f833e8082fd5b9392505050565b8015806200035b5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa15801562000333573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000359919062000897565b155b620003cf5760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527f20746f206e6f6e2d7a65726f20616c6c6f77616e6365000000000000000000006064820152608401620001ea565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b0390811663095ea7b360e01b17909152620004279185916200042c16565b505050565b6040805180820190915260208082527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564908201525f906200047a906001600160a01b038516908490620004fe565b905080515f14806200049d5750808060200190518101906200049d9190620008af565b620004275760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620001ea565b60606200050e84845f8562000516565b949350505050565b606082471015620005795760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401620001ea565b5f80866001600160a01b031685876040516200059691906200087a565b5f6040518083038185875af1925050503d805f8114620005d2576040519150601f19603f3d011682016040523d82523d5f602084013e620005d7565b606091505b509092509050620005eb87838387620005f6565b979650505050505050565b60608315620006695782515f0362000661576001600160a01b0385163b620006615760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620001ea565b50816200050e565b6200050e8383815115620006805781518083602001fd5b8060405162461bcd60e51b8152600401620001ea9190620008d0565b80516001600160a01b0381168114620006b3575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b83811015620006e8578181015183820152602001620006ce565b50505f910152565b5f805f805f60a0868803121562000705575f80fd5b62000710866200069c565b60208701519095506001600160401b03808211156200072d575f80fd5b818801915088601f83011262000741575f80fd5b815181811115620007565762000756620006b8565b604051601f8201601f19908116603f01168101908382118183101715620007815762000781620006b8565b816040528281528b60208487010111156200079a575f80fd5b620007ad836020830160208801620006cc565b8098505050505050620007c3604087016200069c565b9250620007d3606087016200069c565b9150620007e3608087016200069c565b90509295509295909350565b5f815180845262000808816020860160208601620006cc565b601f01601f19169290920160200192915050565b5f60018060a01b03808816835260a060208401526200083f60a0840188620007ef565b9581166040840152938416606083015250911660809091015292915050565b5f602082840312156200086f575f80fd5b620002d8826200069c565b5f82516200088d818460208701620006cc565b9190910192915050565b5f60208284031215620008a8575f80fd5b5051919050565b5f60208284031215620008c0575f80fd5b81518015158114620002d8575f80fd5b602081525f620002d86020830184620007ef565b60805160a05160c0516130b6620009d35f395f818161061501528181610b9e01528181610df001528181610f050152818161120401528181611276015281816114c0015281816115bb01528181611678015261187601525f81816106e00152818161076e0152818161089301528181610a7c01528181610cb601528181610d5301528181610ff5015281816110e901528181611186015281816112c3015281816113a701528181611423015261172e01525f8181610d1a01528181610db30152818161109d0152818161114d015281816114830152818161153701528181611f3a0152611f8501526130b65ff3fe608060405234801561000f575f80fd5b506004361061025c575f3560e01c806373adb21411610144578063ac00ff26116100c1578063e2bf68c611610085578063e2bf68c614610590578063e5e19b4a146105a3578063f3ce280a146105ba578063f887ea40146105fd578063fbfa77cf14610610578063fde813a8146106375761025c565b8063ac00ff2614610518578063b4a8d1b61461052b578063c2b18aa01461055a578063d19a3bb814610562578063d69686011461057d5761025c565b8063950b3d7311610108578063950b3d73146104cf5780639994673d146104e25780639d7fb70c146104ea5780639ee80c5c146104fd578063a39591f3146105105761025c565b806373adb21414610487578063757059491461048f578063797bf343146104a25780637d969932146104aa578063837f9c58146104bc5761025c565b806346aa2f12116101dd5780635d265d3f116101a15780635d265d3f146103ab5780635e311fa5146103e0578063600c557d146103ff57806365210942146104455780636718835f146104585780636b141ba9146104745761025c565b806346aa2f121461034257806349317f1d146103555780634a5d09431461035d5780635001f3b51461036d578063503160d9146103985761025c565b80632e3ecf2c116102245780632e3ecf2c146102ee578063372500ab146103015780633d509c97146103095780633d6cb5751461031c578063467e5eb91461032f5761025c565b806304bd46291461029157806312edb24c146102b757806318144367146102cc578063227b9f5a146102d5578063286a876b146102e8575b73d377919fa87120584b21279a491f82d5265a139c365f80375f80365f845af43d5f803e80801561028b573d5ff35b3d5ffd5b005b6102a461029f366004612a33565b61064a565b6040519081526020015b60405180910390f35b6102bf61066b565b6040516102ae9190612a4e565b6102a460025481565b61028f6102e3366004612a9a565b6106cb565b5f6102a4565b61028f6102fc366004612ac4565b610759565b61028f610829565b61028f610317366004612a33565b61087e565b61028f61032a366004612b13565b610a53565b61028f61033d366004612b2a565b610a67565b6102a4610350366004612a33565b610b87565b6102a4610c0f565b5f54610100900461ffff166102a4565b600354610380906001600160a01b031681565b6040516001600160a01b0390911681526020016102ae565b61028f6103a6366004612b13565b610c2e565b60408051600481526024810182526020810180516001600160e01b031663440368a360e01b17905290516102ae915f91612c05565b6102a46103ee366004612a33565b60076020525f908152604090205481565b61041261040d366004612c1f565b610c3f565b604080516001600160a01b03958616815293851660208501529115159183019190915290911660608201526080016102ae565b61028f610453366004612a33565b610ca1565b5f546104649060ff1681565b60405190151581526020016102ae565b61028f610482366004612c5d565b610d3e565b6102a4610eee565b61028f61049d366004612c5d565b610fe0565b6102a4611086565b5f546301000000900461ffff166102a4565b61028f6104ca366004612a33565b6110d4565b61028f6104dd366004612b13565b611171565b6102a46111ed565b61028f6104f8366004612b13565b61123b565b61038061050b366004612b13565b611243565b6102a461126b565b61028f610526366004612ca4565b6112ae565b61054d610539366004612a33565b60086020525f908152604090205460ff1681565b6040516102ae9190612cd3565b6102bf611334565b61038073d377919fa87120584b21279a491f82d5265a139c81565b61028f61058b366004612b13565b611392565b61028f61059e366004612a33565b61140e565b5f54600160281b90046001600160a01b0316610380565b6105e96105c8366004612cf9565b600560209081525f928352604080842090915290825290205462ffffff1681565b60405162ffffff90911681526020016102ae565b600454610380906001600160a01b031681565b6103807f000000000000000000000000000000000000000000000000000000000000000081565b61028f610645366004612b13565b61155b565b5f610653610eee565b61065b611086565b6106659190612d39565b92915050565b606060098054806020026020016040519081016040528092919081815260200182805480156106c157602002820191905f5260205f20905b81546001600160a01b031681526001909101906020018083116106a3575b5050505050905090565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b158015610728575f80fd5b505afa15801561073a573d5f803e3d5ffd5b5050506001600160a01b039092165f9081526007602052604090205550565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b1580156107b6575f80fd5b505afa1580156107c8573d5f803e3d5ffd5b5050506001600160a01b038085165f8181526005602081815260408084209589168452948152848320805462ffffff1990811662ffffff8a16908117909255928252858420948452939052929020805490921617905550505050565b505050565b5f54600160281b90046001600160a01b0316331461087c5760405162461bcd60e51b815260206004820152600b60248201526a08585d5d1a1bdc9a5e995960aa1b60448201526064015b60405180910390fd5b565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b1580156108db575f80fd5b505afa1580156108ed573d5f803e3d5ffd5b505060098054604080516020808402820181019092528281525f9550935083018282801561094257602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311610924575b505083519394505f925050505b81811015610a2557836001600160a01b031683828151811061097357610973612d4c565b60200260200101516001600160a01b031603610a1d5782610995600184612d60565b815181106109a5576109a5612d4c565b6020026020010151600982815481106109c0576109c0612d4c565b905f5260205f20015f6101000a8154816001600160a01b0302191690836001600160a01b0316021790555060098054806109fc576109fc612d73565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b60010161094f565b5050506001600160a01b03165f908152600860209081526040808320805460ff191690556007909152812055565b610a5b61156c565b610a64816115a3565b50565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b158015610ac4575f80fd5b505afa158015610ad6573d5f803e3d5ffd5b505050506001600160a01b038481165f9081526006602090815260408083209387168352929052908120610b099161294c565b5f5b81811015610b80576001600160a01b038086165f908152600660209081526040808320938816835292905220838383818110610b4957610b49612d4c565b83546001810185555f9485526020909420608090910292909201926003029091019050610b768282612da7565b5050600101610b0b565b5050505050565b60405163402d267d60e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063402d267d90602401602060405180830381865afa158015610beb573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106659190612e1b565b5f610c1861156c565b610c206116f0565b9050610c2b81611713565b90565b610c3661156c565b610a648161185a565b6006602052825f5260405f20602052815f5260405f208181548110610c62575f80fd5b5f9182526020909120600390910201805460018201546002909201546001600160a01b0391821695508183169450600160a01b90920460ff1692501684565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b158015610cfe575f80fd5b505afa158015610d10573d5f803e3d5ffd5b50505050610a64817f00000000000000000000000000000000000000000000000000000000000000006118e8565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b158015610d9b575f80fd5b505afa158015610dad573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614158015610e2557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316826001600160a01b031614155b610e715760405162461bcd60e51b815260206004820152601860248201527f63616e6e6f7420626520612072657761726420746f6b656e00000000000000006044820152606401610873565b6009805460018082019092557f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319166001600160a01b0385169081179091555f9081526008602052604090208054839260ff1990911690836003811115610ee557610ee5612cbf565b02179055505050565b604051636c82bbbf60e11b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906307a2d13a90829063d905777e90602401602060405180830381865afa158015610f5a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f7e9190612e1b565b6040518263ffffffff1660e01b8152600401610f9c91815260200190565b602060405180830381865afa158015610fb7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdb9190612e1b565b905090565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b15801561103d575f80fd5b505afa15801561104f573d5f803e3d5ffd5b5050506001600160a01b0383165f908152600860205260409020805483925060ff19166001836003811115610ee557610ee5612cbf565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401610f9c565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b158015611131575f80fd5b505afa158015611143573d5f803e3d5ffd5b50505050610a64817f0000000000000000000000000000000000000000000000000000000000000000611a5a565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b1580156111ce575f80fd5b505afa1580156111e0573d5f803e3d5ffd5b50505050610a6481611bf3565b6040516370a0823160e01b81523060048201525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906370a0823190602401610f9c565b610a6461156c565b60098181548110611252575f80fd5b5f918252602090912001546001600160a01b0316905081565b5f6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166307a2d13a826112a46111ed565b610f7e9190612d39565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b15801561130b575f80fd5b505afa15801561131d573d5f803e3d5ffd5b50505f805460ff1916931515939093179092555050565b606060018054806020026020016040519081016040528092919081815260200182805480156106c157602002820191905f5260205f209081546001600160a01b031681526001909101906020018083116106a3575050505050905090565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b1580156113ef575f80fd5b505afa158015611401573d5f803e3d5ffd5b50505050610a6481611c8c565b6040516348e4a64960e01b81523360048201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906348e4a649906024015f6040518083038186803b15801561146b575f80fd5b505afa15801561147d573d5f803e3d5ffd5b505050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316141580156114f557507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b031614155b6115315760405162461bcd60e51b815260206004820152600d60248201526c63616e6e6f7420656e61626c6560981b6044820152606401610873565b610a64817f0000000000000000000000000000000000000000000000000000000000000000611cec565b61156361156c565b610a6481611dca565b33301461087c5760405162461bcd60e51b815260206004820152600560248201526410b9b2b63360d91b6044820152606401610873565b604051630a28a47760e01b8152600481018290525f907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690630a28a47790602401602060405180830381865afa158015611608573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061162c9190612e1b565b90505f6116376111ed565b905080821115611655576116528261164d6111ed565b611dde565b91505b604051635d043b2960e11b815260048101839052306024820181905260448201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169063ba087652906064016020604051808303815f875af11580156116c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116ea9190612e1b565b50505050565b5f6116f9611df5565b61170161126b565b611709611086565b610fdb9190612d39565b5f5460ff1661172b57505f805460ff19166001179055565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166301e1d1146040518163ffffffff1660e01b8152600401602060405180830381865afa158015611788573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117ac9190612e1b565b905080821115611823575f54612710906117cf90610100900461ffff1683612e32565b6117d99190612e49565b6117e38284612d60565b111561181f5760405162461bcd60e51b815260206004820152600b60248201526a6865616c7468436865636b60a81b6044820152606401610873565b5050565b8181111561181f575f5461271090611846906301000000900461ffff1683612e32565b6118509190612e49565b6117e38383612d60565b604051636e553f6560e01b8152600481018290523060248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636e553f65906044016020604051808303815f875af11580156118c4573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061181f9190612e1b565b5f54600160281b90046001600160a01b0316801561190857611908611fdd565b6001600160a01b03831661191b57505050565b5f600180548060200260200160405190810160405280929190818152602001828054801561197057602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611952575b505050505090505f5b8151811015611a28575f82828151811061199557611995612d4c565b602002602001015190506119be865f19836001600160a01b031661205e9092919063ffffffff16565b604051632642a09360e11b81526001600160a01b0382811660048301528681166024830152871690634c854126906044015f604051808303815f87803b158015611a06575f80fd5b505af1158015611a18573d5f803e3d5ffd5b5050505050806001019050611979565b50505f80546001600160a01b03909416600160281b0265010000000000600160c81b0319909416939093179092555050565b5f8054600160281b90046001600160a01b031690611a76611334565b90505f5b8151811015610b8057846001600160a01b0316828281518110611a9f57611a9f612d4c565b60200260200101516001600160a01b031603611beb5760018251611ac39190612d60565b8114611b23578160018351611ad89190612d60565b81518110611ae857611ae8612d4c565b6020026020010151828281518110611b0257611b02612d4c565b60200260200101906001600160a01b031690816001600160a01b0316815250505b6001600160a01b03831615611ba557611b466001600160a01b038616845f61205e565b604051639cd38be560e01b81526001600160a01b0386811660048301528581166024830152841690639cd38be5906044015f604051808303815f87803b158015611b8e575f80fd5b505af1158015611ba0573d5f803e3d5ffd5b505050505b8151611bb890600190602085019061296a565b506001805480611bca57611bca612d73565b5f8281526020902081015f1990810180546001600160a01b03191690550190555b600101611a7a565b5f8111611c315760405162461bcd60e51b815260206004820152600c60248201526b085e995c9bc81c1c9bd99a5d60a21b6044820152606401610873565b61ffff811115611c6f5760405162461bcd60e51b8152602060048201526009602482015268042e8dede40d0d2ced60bb1b6044820152606401610873565b5f805461ffff9092166101000262ffff0019909216919091179055565b6127108110611ccb5760405162461bcd60e51b815260206004820152600b60248201526a085b1bdcdcc81b1a5b5a5d60aa1b6044820152606401610873565b5f805461ffff90921663010000000264ffff00000019909216919091179055565b5f54600160281b90046001600160a01b03168015611d7857611d196001600160a01b038416825f1961205e565b604051632642a09360e11b81526001600160a01b0384811660048301528381166024830152821690634c854126906044015f604051808303815f87803b158015611d61575f80fd5b505af1158015611d73573d5f803e3d5ffd5b505050505b50506001805480820182555f919091527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf60180546001600160a01b0319166001600160a01b0392909216919091179055565b610a64611dd98261164d610eee565b6115a3565b5f818310611dec5781611dee565b825b9392505050565b5f6009805480602002602001604051908101604052809291908181526020018280548015611e4a57602002820191905f5260205f20905b81546001600160a01b03168152600190910190602001808311611e2c575b505083519394505f925050505b81811015611fb6575f838281518110611e7257611e72612d4c565b6020908102919091018101516001600160a01b0381165f818152600890935260408084205490516370a0823160e01b815230600482015292945060ff1692916370a0823190602401602060405180830381865afa158015611ed5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ef99190612e1b565b6001600160a01b0384165f90815260076020526040902054909150811115611fab576002826003811115611f2f57611f2f612cbf565b03611f6657611f60837f0000000000000000000000000000000000000000000000000000000000000000835f61211f565b50611fab565b6001826003811115611f7a57611f7a612cbf565b03611fab57611fab837f0000000000000000000000000000000000000000000000000000000000000000835f6123c1565b505050600101611e57565b505f611fcc611fc3611086565b61164d30610b87565b90508015610824576108248161185a565b5f8054600160281b90046001600160a01b031690611ff9611334565b90505f5b81518110156120455761203d835f84848151811061201d5761201d612d4c565b60200260200101516001600160a01b031661205e9092919063ffffffff16565b600101611ffd565b50505f805465010000000000600160c81b031916905550565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526120af84826124a4565b6116ea576040516001600160a01b03841660248201525f604482015261211590859063095ea7b360e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612545565b6116ea8482612545565b5f6002548311156123b957600454612141906001600160a01b03168685612618565b6003546001600160a01b038681169116148061216a57506003546001600160a01b038581169116145b156122835760408051610100810182526001600160a01b0387811680835287821660208085018281525f938452600582528684209284529190528482205462ffffff9081168587019081523060608701908152426080880190815260a088018c815260c089018c815260e08a01978852600480549b5163414bf38960e01b81528b518b169181019190915296518916602488015293519094166044860152905186166064850152516084840152905160a48301525160c48201529051821660e48201529192169063414bf38990610104016020604051808303815f875af1158015612257573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061227b9190612e1b565b9150506123b9565b6001600160a01b038581165f908152600560208181526040808420600354808716865290835281852054938352818520958a1685529482528084205490516bffffffffffffffffffffffff1960608c811b8216948301949094526001600160e81b031960e895861b8116603484015296841b811660378301529190931b909416604b83015287901b909216604e8301529060620160408051601f198184030181526004805460a08501845282855230602086015242858501526060850189905260808501889052925163c04b8d5960e01b81529194506001600160a01b039092169263c04b8d59926123759201612e68565b6020604051808303815f875af1158015612391573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123b59190612e1b565b9150505b949350505050565b6001600160a01b0384165f908152600760205260409020548211156116ea576123ff73cf77a3ba9a5ca399b7c97c74d54e5b1beb874e438584612618565b6001600160a01b038481165f9081526006602090815260408083209387168352929052819020905163cac88ea960e01b815273cf77a3ba9a5ca399b7c97c74d54e5b1beb874e439163cac88ea99161246291869186919030904290600401612ebf565b5f604051808303815f875af115801561247d573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052610b809190810190612f7f565b5f805f846001600160a01b0316846040516124bf9190613038565b5f604051808303815f865af19150503d805f81146124f8576040519150601f19603f3d011682016040523d82523d5f602084013e6124fd565b606091505b50915091508180156125275750805115806125275750808060200190518101906125279190613053565b801561253c57506001600160a01b0385163b15155b95945050505050565b5f612599826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166126b79092919063ffffffff16565b905080515f14806125b95750808060200190518101906125b99190613053565b6108245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401610873565b604051636eb1769f60e11b81523060048201526001600160a01b03848116602483015282919084169063dd62ed3e90604401602060405180830381865afa158015612665573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126899190612e1b565b1015610824576126a36001600160a01b038316845f6126c5565b6108246001600160a01b03831684836126c5565b60606123b984845f856127d8565b80158061273d5750604051636eb1769f60e11b81523060048201526001600160a01b03838116602483015284169063dd62ed3e90604401602060405180830381865afa158015612717573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061273b9190612e1b565b155b6127a85760405162461bcd60e51b815260206004820152603660248201527f5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f60448201527520746f206e6f6e2d7a65726f20616c6c6f77616e636560501b6064820152608401610873565b6040516001600160a01b03831660248201526044810182905261082490849063095ea7b360e01b906064016120de565b6060824710156128395760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b6064820152608401610873565b5f80866001600160a01b031685876040516128549190613038565b5f6040518083038185875af1925050503d805f811461288e576040519150601f19603f3d011682016040523d82523d5f602084013e612893565b606091505b50915091506128a4878383876128af565b979650505050505050565b6060831561291d5782515f03612916576001600160a01b0385163b6129165760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610873565b50816123b9565b6123b983838151156129325781518083602001fd5b8060405162461bcd60e51b8152600401610873919061306e565b5080545f8255600302905f5260205f2090810190610a6491906129cd565b828054828255905f5260205f209081019282156129bd579160200282015b828111156129bd57825182546001600160a01b0319166001600160a01b03909116178255602090920191600190910190612988565b506129c9929150612a0b565b5090565b5b808211156129c95780546001600160a01b031990811682556001820180546001600160a81b031916905560028201805490911690556003016129ce565b5b808211156129c9575f8155600101612a0c565b6001600160a01b0381168114610a64575f80fd5b5f60208284031215612a43575f80fd5b8135611dee81612a1f565b602080825282518282018190525f9190848201906040850190845b81811015612a8e5783516001600160a01b031683529284019291840191600101612a69565b50909695505050505050565b5f8060408385031215612aab575f80fd5b8235612ab681612a1f565b946020939093013593505050565b5f805f60608486031215612ad6575f80fd5b8335612ae181612a1f565b92506020840135612af181612a1f565b9150604084013562ffffff81168114612b08575f80fd5b809150509250925092565b5f60208284031215612b23575f80fd5b5035919050565b5f805f8060608587031215612b3d575f80fd5b8435612b4881612a1f565b93506020850135612b5881612a1f565b9250604085013567ffffffffffffffff80821115612b74575f80fd5b818701915087601f830112612b87575f80fd5b813581811115612b95575f80fd5b8860208260071b8501011115612ba9575f80fd5b95989497505060200194505050565b5f5b83811015612bd2578181015183820152602001612bba565b50505f910152565b5f8151808452612bf1816020860160208601612bb8565b601f01601f19169290920160200192915050565b8215158152604060208201525f6123b96040830184612bda565b5f805f60608486031215612c31575f80fd5b8335612c3c81612a1f565b92506020840135612c4c81612a1f565b929592945050506040919091013590565b5f8060408385031215612c6e575f80fd5b8235612c7981612a1f565b9150602083013560048110612c8c575f80fd5b809150509250929050565b8015158114610a64575f80fd5b5f60208284031215612cb4575f80fd5b8135611dee81612c97565b634e487b7160e01b5f52602160045260245ffd5b6020810160048310612cf357634e487b7160e01b5f52602160045260245ffd5b91905290565b5f8060408385031215612d0a575f80fd5b8235612d1581612a1f565b91506020830135612c8c81612a1f565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561066557610665612d25565b634e487b7160e01b5f52603260045260245ffd5b8181038181111561066557610665612d25565b634e487b7160e01b5f52603160045260245ffd5b80546001600160a01b0319166001600160a01b0392909216919091179055565b8135612db281612a1f565b612dbc8183612d87565b50600181016020830135612dcf81612a1f565b612dd98183612d87565b506040830135612de881612c97565b815460ff60a01b191690151560a01b60ff60a01b161790556060820135612e0e81612a1f565b6108248160028401612d87565b5f60208284031215612e2b575f80fd5b5051919050565b808202811582820484141761066557610665612d25565b5f82612e6357634e487b7160e01b5f52601260045260245ffd5b500490565b602081525f825160a06020840152612e8360c0840182612bda565b905060018060a01b0360208501511660408401526040840151606084015260608401516080840152608084015160a08401528091505092915050565b5f60a08083018884526020886020860152604060a0604087015282895480855260c0880191508a5f5260205f2094505f5b81811015612f3e5785546001600160a01b03908116845260018781015480831688870152891c60ff161515868601526002880154909116606085015260039096019560809093019201612ef0565b50506001600160a01b03891660608801529450612f5b9350505050565b8260808301529695505050505050565b634e487b7160e01b5f52604160045260245ffd5b5f6020808385031215612f90575f80fd5b825167ffffffffffffffff80821115612fa7575f80fd5b818501915085601f830112612fba575f80fd5b815181811115612fcc57612fcc612f6b565b8060051b604051601f19603f83011681018181108582111715612ff157612ff1612f6b565b60405291825284820192508381018501918883111561300e575f80fd5b938501935b8285101561302c57845184529385019392850192613013565b98975050505050505050565b5f8251613049818460208701612bb8565b9190910192915050565b5f60208284031215613063575f80fd5b8151611dee81612c97565b602081525f611dee6020830184612bda56fea2646970667358221220e5c598bb194197144fe8c6121ebadce562f2213e990c3e16792f8c3a5f6216ba64736f6c63430008170033a2646970667358221220d5dedea5187ef29e0760020c10b312b1f23dd1918362c9a3b9dd41fe1735bdad64736f6c634300081700330000000000000000000000001b5f15dcb82d25f91c65b53cee151e8b9fbdd2710000000000000000000000001b5f15dcb82d25f91c65b53cee151e8b9fbdd27100000000000000000000000046679ba8ce6473a9e0867c52b5a50ff97579740e00000000000000000000000001fe3347316b2223961b20689c65eaea71348e93000000000000000000000000f6d01e649b5982c50c552f0cfa6ef61a3065ec480000000000000000000000004200000000000000000000000000000000000006