0 txs
235 calls
constructor
constructor(address bentoBox_)
functions
accrueInfo
viewfunction accrueInfo() view returns (uint64 interestPerSecond, uint64 lastAccrued, uint128 feesEarnedFraction)
allowance
viewfunction allowance(address, address) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address) view returns (uint256)
bentoBox
viewfunction bentoBox() view returns (address)
collateral
viewfunction collateral() view returns (address)
decimals
viewfunction decimals() view returns (uint8)
DOMAIN_SEPARATOR
viewfunction DOMAIN_SEPARATOR() view returns (bytes32)
exchangeRate
viewfunction exchangeRate() view returns (uint256)
feeTo
viewfunction feeTo() view returns (address)
masterContract
viewfunction masterContract() view returns (address)
name
viewfunction name() view returns (string)
nonces
viewfunction nonces(address) view returns (uint256)
oracle
viewfunction oracle() view returns (address)
oracleData
viewfunction oracleData() view returns (bytes)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
swappers
viewfunction swappers(address) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalAsset
viewfunction totalAsset() view returns (uint128 elastic, uint128 base)
totalBorrow
viewfunction totalBorrow() view returns (uint128 elastic, uint128 base)
totalCollateralShare
viewfunction totalCollateralShare() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
userBorrowPart
viewfunction userBorrowPart(address) view returns (uint256)
userCollateralShare
viewfunction userCollateralShare(address) view returns (uint256)
accrue
nonpayablefunction accrue()
addAsset
nonpayablefunction addAsset(address to, bool skim, uint256 share) returns (uint256 fraction)
addCollateral
nonpayablefunction addCollateral(address to, bool skim, uint256 share)
approve
nonpayablefunction approve(address spender, uint256 amount) returns (bool)
borrow
nonpayablefunction borrow(address to, uint256 amount) returns (uint256 part, uint256 share)
claimOwnership
nonpayablefunction claimOwnership()
cook
payablefunction cook(uint8[] actions, uint256[] values, bytes[] datas) payable returns (uint256 value1, uint256 value2)
init
payablefunction init(bytes data) payable
liquidate
nonpayablefunction liquidate(address[] users, uint256[] maxBorrowParts, address to, address swapper, bool open)
permit
nonpayablefunction permit(address owner_, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s)
removeAsset
nonpayablefunction removeAsset(address to, uint256 fraction) returns (uint256 share)
removeCollateral
nonpayablefunction removeCollateral(address to, uint256 share)
repay
nonpayablefunction repay(address to, bool skim, uint256 part) returns (uint256 amount)
setFeeTo
nonpayablefunction setFeeTo(address newFeeTo)
setSwapper
nonpayablefunction setSwapper(address swapper, bool enable)
transfer
nonpayablefunction transfer(address to, uint256 amount) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 amount) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner, bool direct, bool renounce)
updateExchangeRate
nonpayablefunction updateExchangeRate() returns (bool updated, uint256 rate)
withdrawFees
nonpayablefunction withdrawFees()
events
Approval
event Approval(address indexed _owner, address indexed _spender, uint256 _value)
LogAccrue
event LogAccrue(uint256 accruedAmount, uint256 feeFraction, uint64 rate, uint256 utilization)
LogAddAsset
event LogAddAsset(address indexed from, address indexed to, uint256 share, uint256 fraction)
LogAddCollateral
event LogAddCollateral(address indexed from, address indexed to, uint256 share)
LogBorrow
event LogBorrow(address indexed from, address indexed to, uint256 amount, uint256 feeAmount, uint256 part)
LogExchangeRate
event LogExchangeRate(uint256 rate)
LogFeeTo
event LogFeeTo(address indexed newFeeTo)
LogRemoveAsset
event LogRemoveAsset(address indexed from, address indexed to, uint256 share, uint256 fraction)
LogRemoveCollateral
event LogRemoveCollateral(address indexed from, address indexed to, uint256 share)
LogRepay
event LogRepay(address indexed from, address indexed to, uint256 amount, uint256 part)
LogWithdrawFees
event LogWithdrawFees(address indexed feeTo, uint256 feesEarnedFraction)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed _from, address indexed _to, uint256 _value)
errors
No errors.
creation bytecode
0x6101006040523480156200001257600080fd5b5060405162006130380380620061308339810160408190526200003591620000fe565b4660a08190526200004681620000a8565b60805250600380546001600160a01b031916339081179091556040516000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a36001600160601b0319606091821b1660c05230901b60e0526200014d565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001620000e1939291906200012e565b604051602081830303815290604052805190602001209050919050565b60006020828403121562000110578081fd5b81516001600160a01b038116811462000127578182fd5b9392505050565b92835260208301919091526001600160a01b0316604082015260600190565b60805160a05160c05160601c60e05160601c615f0c6200022460003980610d7a5280611f40528061223052806128f952508061143752806115ff52806116d7528061184a52806119ef5280611b1e5280611e975280611ffb528061212b52806121ea52806123c4528061250d52806126715280612d8252806132d252806133da528061349c52806136845280613744528061393e5280613c0c5280613d5b5280613e84528061401152806140c752806141a35280614328528061462352806146aa525080610ca3525080610cd85250615f0c6000f3fe6080604052600436106102725760003560e01c8063656f3d641161014f5780638da5cb5b116100c1578063d8dfeb451161007a578063d8dfeb45146106f1578063dd62ed3e14610706578063e30c397814610726578063f46901ed1461073b578063f8ba4cff1461075b578063f9557ccb1461077057610272565b80638da5cb5b1461064e57806395d89b4114610663578063a9059cbb14610678578063b27c0e7414610698578063cd446e22146106bc578063d505accf146106d157610272565b80637dc0d1d0116101135780637dc0d1d0146105965780637ecebe00146105ab5780638285ef40146105cb578063860ffea1146105ee578063876467f81461060e5780638cad7fbe1461062e57610272565b8063656f3d64146105195780636b2ace871461052c57806370a082311461054157806374645ff31461056157806376ee101b1461057657610272565b8063313ce567116101e8578063473e3ce7116101ac578063473e3ce714610479578063476343ee1461048e57806348e4163e146104a35780634b8a3529146104c35780634ddf47d4146104f15780634e71e0c81461050457610272565b8063313ce567146103f85780633644e5151461041a57806338d52e0f1461042f5780633ba0b9a9146104445780633f2617cb1461045957610272565b806315294c401161023a57806315294c401461033657806318160ddd146103635780631b51e940146103785780631c9e379b146103985780632317ef67146103b857806323b872dd146103d857610272565b8063017e7e581461027757806302ce728f146102a257806306fdde03146102c5578063078dfbe7146102e7578063095ea7b314610309575b600080fd5b34801561028357600080fd5b5061028c610785565b6040516102999190615576565b60405180910390f35b3480156102ae57600080fd5b506102b7610794565b6040516102999291906155ce565b3480156102d157600080fd5b506102da610871565b6040516102999190615658565b3480156102f357600080fd5b50610307610302366004614dfb565b610949565b005b34801561031557600080fd5b50610329610324366004614e74565b610a39565b60405161029991906155c3565b34801561034257600080fd5b50610356610351366004614e45565b610aa4565b60405161029991906155de565b34801561036f57600080fd5b50610356610ac1565b34801561038457600080fd5b50610356610393366004614e45565b610ad7565b3480156103a457600080fd5b506103566103b3366004614be4565b610aec565b3480156103c457600080fd5b506103566103d3366004614e74565b610afe565b3480156103e457600080fd5b506103296103f3366004614d4b565b610b19565b34801561040457600080fd5b5061040d610c81565b6040516102999190615d7a565b34801561042657600080fd5b50610356610c9e565b34801561043b57600080fd5b5061028c610cfe565b34801561045057600080fd5b50610356610d0d565b34801561046557600080fd5b50610307610474366004615285565b610d13565b34801561048557600080fd5b50610356610d68565b34801561049a57600080fd5b50610307610d6e565b3480156104af57600080fd5b506103566104be366004614be4565b610ede565b3480156104cf57600080fd5b506104e36104de366004614e74565b610ef0565b604051610299929190615d2a565b6103076104ff366004615056565b610f3e565b34801561051057600080fd5b50610307611021565b6104e3610527366004614f44565b6110af565b34801561053857600080fd5b5061028c6119ed565b34801561054d57600080fd5b5061035661055c366004614be4565b611a11565b34801561056d57600080fd5b506102da611a23565b34801561058257600080fd5b50610307610591366004614e9f565b611ab1565b3480156105a257600080fd5b5061028c6125bb565b3480156105b757600080fd5b506103566105c6366004614be4565b6125ca565b3480156105d757600080fd5b506105e06125dc565b604051610299929190615d10565b3480156105fa57600080fd5b50610307610609366004614e45565b6125f6565b34801561061a57600080fd5b50610307610629366004614e74565b6126d7565b34801561063a57600080fd5b50610329610649366004614be4565b612717565b34801561065a57600080fd5b5061028c61272c565b34801561066f57600080fd5b506102da61273b565b34801561068457600080fd5b50610329610693366004614e74565b6127ff565b3480156106a457600080fd5b506106ad6128ca565b60405161029993929190615d4e565b3480156106c857600080fd5b5061028c6128f7565b3480156106dd57600080fd5b506103076106ec366004614d8b565b61291b565b3480156106fd57600080fd5b5061028c612abc565b34801561071257600080fd5b50610356610721366004614d13565b612acb565b34801561073257600080fd5b5061028c612ae8565b34801561074757600080fd5b50610307610756366004614be4565b612af7565b34801561076757600080fd5b50610307612b6b565b34801561077c57600080fd5b506105e061312d565b6005546001600160a01b031681565b60095460405163d6d7d52560e01b815260009182916001600160a01b039091169063d6d7d525906107ca90600a9060040161566b565b6040805180830381600087803b1580156107e357600080fd5b505af11580156107f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061081b9190614ff5565b909250905081156108685760108190556040517f9f9192b5edb17356c524e08d9e025c8e2f6307e6ea52fb7968faa3081f51c3c89061085b9083906155de565b60405180910390a161086d565b506010545b9091565b600754606090610889906001600160a01b0316613147565b60085461089e906001600160a01b0316613147565b60095460405163355a219b60e21b81526001600160a01b039091169063d568866c906108cf90600a9060040161566b565b60006040518083038186803b1580156108e757600080fd5b505afa1580156108fb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109239190810190615314565b6040516020016109359392919061548c565b604051602081830303815290604052905090565b6003546001600160a01b0316331461097c5760405162461bcd60e51b815260040161097390615b05565b60405180910390fd5b8115610a18576001600160a01b0383161515806109965750805b6109b25760405162461bcd60e51b815260040161097390615946565b6003546040516001600160a01b038086169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b0385166001600160a01b031991821617909155600480549091169055610a34565b600480546001600160a01b0319166001600160a01b0385161790555b505050565b3360008181526001602090815260408083206001600160a01b038716808552925280832085905551919290917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590610a929086906155de565b60405180910390a35060015b92915050565b6000610aae612b6b565b610ab984848461320c565b949350505050565b600c54600160801b90046001600160801b031690565b6000610ae1612b6b565b610ab9848484613445565b600e6020526000908152604090205481565b6000610b08612b6b565b610b1283836136f0565b9392505050565b60008115610c3e576001600160a01b03841660009081526020819052604090205482811015610b5a5760405162461bcd60e51b815260040161097390615bd4565b836001600160a01b0316856001600160a01b031614610c3c576001600160a01b03851660009081526001602090815260408083203384529091529020546000198114610be95783811015610bc05760405162461bcd60e51b815260040161097390615a40565b6001600160a01b0386166000908152600160209081526040808320338452909152902084820390555b6001600160a01b038516610c0f5760405162461bcd60e51b8152600401610973906158df565b506001600160a01b0380861660009081526020819052604080822086850390559186168152208054840190555b505b826001600160a01b0316846001600160a01b0316600080516020615eb783398151915284604051610c6f91906155de565b60405180910390a35060019392505050565b600854600090610c99906001600160a01b03166139b7565b905090565b6000467f00000000000000000000000000000000000000000000000000000000000000008114610cd657610cd181613a70565b610cf8565b7f00000000000000000000000000000000000000000000000000000000000000005b91505090565b6008546001600160a01b031681565b60105481565b6003546001600160a01b03163314610d3d5760405162461bcd60e51b815260040161097390615b05565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b600b5481565b610d76612b6b565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b158015610dd157600080fd5b505afa158015610de5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e099190614c00565b6011546001600160a01b038216600090815260208190526040902054919250600160801b90046001600160801b031690610e439082613ac4565b6001600160a01b038316600081815260208190526040808220939093559151909190600080516020615eb783398151915290610e809085906155de565b60405180910390a3601180546001600160801b031690556040516001600160a01b038316907fbe641c3ffc44b2d6c184f023fa4ed7bda4b6ffa71e03b3c98ae0c776da1f17e790610ed29084906155de565b60405180910390a25050565b600f6020526000908152604090205481565b600080610efb612b6b565b610f058484613ae7565b8092508193505050610f1b336000601054613dd5565b610f375760405162461bcd60e51b815260040161097390615ace565b9250929050565b6007546001600160a01b031615610f675760405162461bcd60e51b8152600401610973906158a8565b610f73818301836151db565b805160079060009060089082906009908290610f9690600a9060208a0190614a17565b5081546001600160a01b0398891661010092830a908102908a021990911617909155825497871691810a918202918702199097161790558154958416940a938402938302199094169290921790925550600754166110065760405162461bcd60e51b815260040161097390615a13565b50506011805467ffffffffffffffff19166312e687c0179055565b6004546001600160a01b031633811461104c5760405162461bcd60e51b815260040161097390615b3a565b6003546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3600380546001600160a01b039092166001600160a01b0319928316179055600480549091169055565b6000806110ba614a91565b60005b888110156119af5760008a8a838181106110d357fe5b90506020020160208101906110e891906153c3565b905082602001511580156110ff5750600a8160ff16105b156111145761110c612b6b565b600160208401525b60ff8116600a141561116e57600080600089898681811061113157fe5b90506020028101906111439190615d88565b81019061115091906152ee565b9250925092506111668282610609868c8c613f50565b5050506119a6565b60ff8116600114156111cf57600080600089898681811061118b57fe5b905060200281019061119d9190615d88565b8101906111aa91906152ee565b9250925092506111c582826111c0868c8c613f50565b613445565b97505050506119a6565b60ff81166002141561122f5760008060008989868181106111ec57fe5b90506020028101906111fe9190615d88565b81019061120b91906152ee565b9250925092506112268282611221868c8c613f50565b61320c565b505050506119a6565b60ff81166003141561128a5760008088888581811061124a57fe5b905060200281019061125c9190615d88565b81019061126991906152ca565b915091506112818161127c848a8a613f50565b6136f0565b965050506119a6565b60ff8116600414156112e7576000808888858181106112a557fe5b90506020028101906112b79190615d88565b8101906112c491906152ca565b915091506112dc816112d7848a8a613f50565b613f78565b5050600183526119a6565b60ff81166005141561134a5760008088888581811061130257fe5b90506020028101906113149190615d88565b81019061132191906152ca565b9150915061133981611334848a8a613f50565b613ae7565b6001875290975095506119a6915050565b60ff8116600b14156113e957600080600089898681811061136757fe5b90506020028101906113799190615d88565b8101906113869190615022565b925092509250600080611397610794565b915091508415806113a55750815b80156113b057508381115b80156113c357508215806113c357508281115b6113df5760405162461bcd60e51b815260040161097390615ca9565b50505050506119a6565b60ff8116601814156114c8576000806000806000808c8c8981811061140a57fe5b905060200281019061141c9190615d88565b8101906114299190614c1c565b9550955095509550955095507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c0a47c938787878787876040518763ffffffff1660e01b815260040161148b9695949392919061558a565b600060405180830381600087803b1580156114a557600080fd5b505af11580156114b9573d6000803e3d6000fd5b505050505050505050506119a6565b60ff811660141415611550576115468787848181106114e357fe5b90506020028101906114f59190615d88565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508d92508c915086905081811061153857fe5b905060200201358787614086565b90955093506119a6565b60ff8116601514156115bb5761154687878481811061156b57fe5b905060200281019061157d9190615d88565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525089925088915061417c9050565b60ff8116601614156116935760008060008989868181106115d857fe5b90506020028101906115ea9190615d88565b8101906115f79190614d4b565b9250925092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f18d03cc84338561163a868e8e613f50565b6040518563ffffffff1660e01b8152600401611659949392919061570f565b600060405180830381600087803b15801561167357600080fd5b505af1158015611687573d6000803e3d6000fd5b505050505050506119a6565b60ff8116601714156117275760006060808989868181106116b057fe5b90506020028101906116c29190615d88565b8101906116cf9190615109565b9250925092507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630fca8843843385856040518563ffffffff1660e01b8152600401611659949392919061576d565b60ff8116601e141561180157606060006117a98b8b8681811061174657fe5b905060200201358a8a8781811061175957fe5b905060200281019061176b9190615d88565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152508c92508b915061426a9050565b915091508060ff16600114156117d457818060200190518101906117cd9190615388565b96506117fa565b8060ff16600214156117fa57818060200190518101906117f491906153a0565b90975095505b50506119a6565b60ff81166006141561192957600087878481811061181b57fe5b905060200281019061182d9190615d88565b81019061183a91906152b2565b6008549091506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163da5139ca91166118b1611881858b8b613f50565b60408051808201909152600d546001600160801b038082168352600160801b909104166020820152906001614420565b60016040518463ffffffff1660e01b81526004016118d193929190615832565b60206040518083038186803b1580156118e957600080fd5b505afa1580156118fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119219190615388565b9550506119a6565b60ff8116600714156119a657600087878481811061194357fe5b90506020028101906119559190615d88565b81019061196291906152b2565b90506119a2611972828888613f50565b60408051808201909152600d546001600160801b038082168352600160801b9091041660208201529060006144b9565b9550505b506001016110bd565b508051156119e1576119c5336000601054613dd5565b6119e15760405162461bcd60e51b815260040161097390615ace565b50965096945050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006020819052908152604090205481565b600a805460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529291830182828015611aa95780601f10611a7e57610100808354040283529160200191611aa9565b820191906000526020600020905b815481529060010190602001808311611a8c57829003601f168201915b505050505081565b6000611abb610794565b915050611ac6612b6b565b6000806000611ad3614a91565b5060408051808201909152600d546001600160801b038082168352600160801b909104166020820152611b04614a91565b600754604051634ffe34db60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811692634ffe34db92611b57929190911690600401615576565b604080518083038186803b158015611b6e57600080fd5b505afa158015611b82573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba69190615346565b905060005b8c811015611dcd5760008e8e83818110611bc157fe5b9050602002016020810190611bd69190614be4565b9050611be3818a8a613dd5565b611dc4576001600160a01b0381166000908152600f6020526040812054808f8f86818110611c0d57fe5b9050602002013511611c31578e8e85818110611c2557fe5b90506020020135611c33565b805b9150611c3f8183614532565b6001600160a01b0384166000908152600f60205260408120919091559050611c68868383614420565b90506000611ca369152d02c7e14af6800000611c918d611c8b866201b580614555565b90614555565b81611c9857fe5b8891900460006144b9565b6001600160a01b0385166000908152600e6020526040902054909150611cc99082614532565b6001600160a01b038086166000908152600e60205260409020919091558d1615611cf3578c611cf5565b8d5b6001600160a01b0316846001600160a01b03167f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40283604051611d3791906155de565b60405180910390a36001600160a01b03808516908e1615611d58578d611d5a565b335b6001600160a01b03167fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8486604051611d94929190615d2a565b60405180910390a3611da68a82613ac4565b9950611db28983613ac4565b9850611dbe8884613ac4565b97505050505b50600101611bab565b5083611deb5760405162461bcd60e51b81526004016109739061590f565b611e08611df78561458c565b83516001600160801b0316906145b9565b6001600160801b03168252611e33611e1f8461458c565b60208401516001600160801b0316906145b9565b6001600160801b03908116602084018190528351600d80546001600160801b03191691841691909117909216600160801b909102179055600b54611e779086614532565b600b55600854604051636d289ce560e11b81526000916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263da5139ca92611ed29216908990600190600401615832565b60206040518083038186803b158015611eea57600080fd5b505afa158015611efe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f229190615388565b9050876123b757604051634656bfdf60e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690638cad7fbe90611f75908c90600401615576565b60206040518083038186803b158015611f8d57600080fd5b505afa158015611fa1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611fc59190614fd9565b611fe15760405162461bcd60e51b815260040161097390615c3b565b600754604051633c6340f360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f18d03cc9261203a92919091169030908e908c9060040161570f565b600060405180830381600087803b15801561205457600080fd5b505af1158015612068573d6000803e3d6000fd5b50506007546008546040516371a1ff0960e11b81526001600160a01b03808f16955063e343fe1294506120a8938116921690309087908d90600401615739565b6040805180830381600087803b1580156120c157600080fd5b505af11580156120d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120f991906153a0565b5050600c54600854604051633de222bb60e21b81526000926121bc926001600160801b03909116916001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f7888aec9261216692919091169030906004016156f5565b60206040518083038186803b15801561217e57600080fd5b505afa158015612192573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121b69190615388565b90614532565b905060006121ca8284614532565b90506000620186a06121de83612710614555565b816121e557fe5b0490507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f18d03cc600860009054906101000a90046001600160a01b0316307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663017e7e586040518163ffffffff1660e01b815260040160206040518083038186803b15801561228757600080fd5b505afa15801561229b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122bf9190614c00565b856040518563ffffffff1660e01b81526004016122df949392919061570f565b600060405180830381600087803b1580156122f957600080fd5b505af115801561230d573d6000803e3d6000fd5b5050505061234161232f61232a838661453290919063ffffffff16565b61458c565b600c546001600160801b0316906145e8565b600c80546001600160801b0319166001600160801b0392909216919091179055306001600160a01b038d167f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e386123978585614532565b60006040516123a7929190615d2a565b60405180910390a35050506125ab565b6007546001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163f18d03cc919081169030908d16156123ff578c612401565b8d5b8a6040518563ffffffff1660e01b8152600401612421949392919061570f565b600060405180830381600087803b15801561243b57600080fd5b505af115801561244f573d6000803e3d6000fd5b505050506001600160a01b038916156124f3576007546008546040516371a1ff0960e11b81526001600160a01b03808d169363e343fe129361249f93918316921690339087908d90600401615739565b6040805180830381600087803b1580156124b857600080fd5b505af11580156124cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124f091906153a0565b50505b600854604051633c6340f360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f18d03cc9261254c92919091169033903090879060040161570f565b600060405180830381600087803b15801561256657600080fd5b505af115801561257a573d6000803e3d6000fd5b5050505061258a61232f8261458c565b600c80546001600160801b0319166001600160801b03929092169190911790555b5050505050505050505050505050565b6009546001600160a01b031681565b60026020526000908152604090205481565b600d546001600160801b0380821691600160801b90041682565b6001600160a01b0383166000908152600e60205260409020546126199082613ac4565b6001600160a01b0384166000908152600e6020526040902055600b5461263f8183613ac4565b600b5560075461265a906001600160a01b0316838386614617565b836001600160a01b03168361266f5733612691565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b03167f9ed03113de523cebfe5e49d5f8e12894b1c0d42ce805990461726444c90eab87846040516126c991906155de565b60405180910390a350505050565b6126df612b6b565b6126e98282613f78565b6126f7336000601054613dd5565b6127135760405162461bcd60e51b815260040161097390615ace565b5050565b60066020526000908152604090205460ff1681565b6003546001600160a01b031681565b600754606090612753906001600160a01b031661471e565b600854612768906001600160a01b031661471e565b60095460405163634ce26b60e11b81526001600160a01b039091169063c699c4d69061279990600a9060040161566b565b60006040518083038186803b1580156127b157600080fd5b505afa1580156127c5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526127ed9190810190615314565b60405160200161093593929190615509565b600081156128995733600090815260208190526040902054828110156128375760405162461bcd60e51b815260040161097390615bd4565b336001600160a01b03851614612897576001600160a01b03841661286d5760405162461bcd60e51b8152600401610973906158df565b3360009081526020819052604080822085840390556001600160a01b038616825290208054840190555b505b826001600160a01b0316336001600160a01b0316600080516020615eb783398151915284604051610a9291906155de565b6011546001600160401b0380821691600160401b810490911690600160801b90046001600160801b031683565b7f000000000000000000000000000000000000000000000000000000000000000081565b6001600160a01b0387166129415760405162461bcd60e51b815260040161097390615b6f565b8342106129605760405162461bcd60e51b815260040161097390615aa6565b6001600160a01b03871660008181526002602090815260409182902080546001818101909255925190926129de926129c3927f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9928e928e928e92918e91016155e7565b60405160208183030381529060405280519060200120614765565b858585604051600081526020016040526040516129fe949392919061563a565b6020604051602081039080840390855afa158015612a20573d6000803e3d6000fd5b505050602060405103516001600160a01b031614612a505760405162461bcd60e51b815260040161097390615cd9565b6001600160a01b038088166000818152600160209081526040808320948b168084529490915290819020889055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590612aab9089906155de565b60405180910390a350505050505050565b6007546001600160a01b031681565b600160209081526000928352604080842090915290825290205481565b6004546001600160a01b031681565b6003546001600160a01b03163314612b215760405162461bcd60e51b815260040161097390615b05565b600580546001600160a01b0319166001600160a01b0383169081179091556040517fcf1d3f17e521c635e0d20b8acba94ba170afc041d0546d46dafa09d3c9c19eb390600090a250565b612b73614aa8565b50604080516060810182526011546001600160401b038082168352600160401b82041660208301819052600160801b9091046001600160801b03169282019290925290420380612bc457505061312b565b6001600160401b0342166020830152612bdb614a91565b5060408051808201909152600d546001600160801b038082168352600160801b9091041660208201819052612ccd5782516001600160401b03166312e687c014612c65576312e687c08084526040517f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b91612c5c9160009182918290615855565b60405180910390a15b5050805160118054602084015160409094015167ffffffffffffffff199091166001600160401b039384161767ffffffffffffffff60401b1916600160401b9390941692909202929092176001600160801b03908116600160801b919092160217905561312b565b600080612cd8614a91565b5060408051808201909152600c546001600160801b038082168352600160801b9091048116602083015286518551670de0b6b3a764000092612d2a928992611c8b9216906001600160401b0316614555565b81612d3157fe5b049250612d51612d408461458c565b85516001600160801b0316906145e8565b6001600160801b03168085526008548251604051630acc462360e31b8152600093612e129390926001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811693635662311893612dbc93921691908890600401615806565b60206040518083038186803b158015612dd457600080fd5b505afa158015612de8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e0c9190615388565b90613ac4565b90506000620186a0612e2686612710614555565b81612e2d57fe5b04905081612e5184602001516001600160801b03168361455590919063ffffffff16565b81612e5857fe5b049350612e7b612e678561458c565b60408a01516001600160801b0316906145e8565b6001600160801b03166040890152612ea9612e958561458c565b60208501516001600160801b0316906145e8565b600c80546001600160801b03908116600160801b9382168402179091558751600d805460208b01516001600160801b031990911692841692831784169316909302919091179091556000908390612f0890670de0b6b3a7640000614555565b81612f0f57fe5b0490506709b6e64a8ec60000811015612fd15760006709b6e64a8ec60000612f43670de0b6b3a7640000611c8b8386614532565b81612f4a57fe5b0490506000612f78612f608b611c8b8580614555565b7054a2b63d65d79d094abb6688000000000090613ac4565b8b519091508190612fa3906001600160401b03167054a2b63d65d79d094abb66880000000000614555565b81612faa57fe5b046001600160401b0316808c526304b9a1f01115612fca576304b9a1f08b525b5050613082565b670b1a2bc2ec5000008111156130825760006702c68af0bb14000061300a670de0b6b3a7640000611c8b85670b1a2bc2ec500000614532565b8161301157fe5b0490506000613027612f608b611c8b8580614555565b8b519091506000907054a2b63d65d79d094abb6688000000000090613055906001600160401b031684614555565b8161305c57fe5b0490506449d482460081111561307457506449d48246005b6001600160401b03168b5250505b88516040517f33af5ce86e8438eff54589f85332916444457dfa8685493fbd579b809097026b916130b891899189918690615855565b60405180910390a1505086516011805460208a01516040909a015167ffffffffffffffff199091166001600160401b039384161767ffffffffffffffff60401b1916600160401b93909a1692909202989098176001600160801b03908116600160801b9190921602179096555050505050505b565b600c546001600160801b0380821691600160801b90041682565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b179052905160609160009183916001600160a01b0386169161318e9190615427565b600060405180830381855afa9150503d80600081146131c9576040519150601f19603f3d011682016040523d82523d6000602084013e6131ce565b606091505b5091509150816131f957604051806040016040528060038152602001623f3f3f60e81b815250613202565b6132028161479d565b925050505b919050565b60408051808201909152600d546001600160801b038082168352600160801b90910416602082015260009061324390836001614902565b8151600d80546020948501516001600160801b03908116600160801b029381166001600160801b031990921691909117169190911790556001600160a01b0386166000908152600f9092526040909120549091506132a19083614532565b6001600160a01b038086166000908152600f6020526040808220939093556008549251636d289ce560e11b815290927f000000000000000000000000000000000000000000000000000000000000000083169263da5139ca9261330f92909116908690600190600401615832565b60206040518083038186803b15801561332757600080fd5b505afa15801561333b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061335f9190615388565b600c546008549192506001600160801b031690613387906001600160a01b0316838388614617565b6133a36133938361458c565b6001600160801b038316906145e8565b600c80546001600160801b0319166001600160801b03929092169190911790556001600160a01b038616856133d857336133fa565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b03167fc8e512d8f188ca059984b5853d2bf653da902696b8512785b182b2c813789a6e8587604051613434929190615d2a565b60405180910390a350509392505050565b600061344f614a91565b50604080518082018252600c546001600160801b03808216808452600160801b90920481166020840152600854600d549451636d289ce560e11b8152939492936000936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169463da5139ca946134d8949216921690600190600401615806565b60206040518083038186803b1580156134f057600080fd5b505afa158015613504573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906135289190615388565b83516001600160801b0316019050801561356a578061355d84602001516001600160801b03168761455590919063ffffffff16565b8161356457fe5b0461356c565b845b93506103e861359161357d8661458c565b60208601516001600160801b0316906145e8565b6001600160801b031610156135ac5760009350505050610b12565b6135b7838686614977565b8051600c80546020938401516001600160801b03908116600160801b029381166001600160801b031990921691909117169190911790556001600160a01b03881660009081529081905260409020546136109085613ac4565b6001600160a01b038816600081815260208190526040808220939093559151909190600080516020615eb78339815191529061364d9088906155de565b60405180910390a360085461366d906001600160a01b0316868489614617565b866001600160a01b03168661368257336136a4565b7f00000000000000000000000000000000000000000000000000000000000000005b6001600160a01b03167f30a8c4f9ab5af7e1309ca87c32377d1a83366c5990472dbf9d262450eae14e3887876040516136de929190615d2a565b60405180910390a35050509392505050565b60006136fa614a91565b50604080518082018252600c546001600160801b038082168352600160801b90910481166020830152600854600d549351636d289ce560e11b815292936000936001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169463da5139ca9461378194921692911690600190600401615806565b60206040518083038186803b15801561379957600080fd5b505afa1580156137ad573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906137d19190615388565b825160208401516001600160801b03918216929092019250166137f48583614555565b816137fb57fe5b33600090815260208190526040902054919004935061381a9085614532565b33600081815260208190526040808220939093559151600080516020615eb78339815191529061384b9088906155de565b60405180910390a361385f611df78461458c565b6001600160801b03168252613876611e1f8561458c565b6001600160801b0316602083018190526103e811156138a75760405162461bcd60e51b815260040161097390615ba6565b8151600c805460208501516001600160801b03908116600160801b029381166001600160801b031990921691909117169190911790556040516001600160a01b0386169033907f6e853a5fd6b51d773691f542ebac8513c9992a51380d4c342031056a641142289061391c9087908990615d2a565b60405180910390a3600854604051633c6340f360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f18d03cc9261397d92919091169030908a90899060040161570f565b600060405180830381600087803b15801561399757600080fd5b505af11580156139ab573d6000803e3d6000fd5b50505050505092915050565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b179052905160009182916060916001600160a01b038616916139fe9190615427565b600060405180830381855afa9150503d8060008114613a39576040519150601f19603f3d011682016040523d82523d6000602084013e613a3e565b606091505b5091509150818015613a51575080516020145b613a5c576012613202565b8080602001905181019061320291906153df565b60007f47e79534a245952e8b16893a336b85a3d9ea9fa8c573f3d803afb92a794692188230604051602001613aa79392919061561b565b604051602081830303815290604052805190602001209050919050565b81810181811015610a9e5760405162461bcd60e51b8152600401610973906159dc565b60008080620186a0613afa856032614555565b81613b0157fe5b049050613b41613b118583613ac4565b60408051808201909152600d546001600160801b038082168352600160801b9091041660208201529060016149b8565b8151600d80546020948501516001600160801b03908116600160801b029381166001600160801b03199092169190911716919091179055336000908152600f909252604090912054909350613b969084613ac4565b336000818152600f6020526040908190209290925590516001600160a01b03871691907f3a5151e57d3bc9798e7853034ac52293d1a0e12a2b44725e75b03b21f86477a690613bea90889086908990615d38565b60405180910390a3600854604051636d289ce560e11b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263da5139ca92613c4a9291909116908890600090600401615832565b60206040518083038186803b158015613c6257600080fd5b505afa158015613c76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c9a9190615388565b9150613ca4614a91565b5060408051808201909152600c546001600160801b038082168352600160801b90910416602082018190526103e81115613cf05760405162461bcd60e51b815260040161097390615ba6565b613d0d613cfc8461458c565b82516001600160801b0316906145b9565b6001600160801b03908116808352600c805460208501518416600160801b026001600160801b0319909116909217909216179055600854604051633c6340f360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f18d03cc92613d9a92919091169030908b90899060040161570f565b600060405180830381600087803b158015613db457600080fd5b505af1158015613dc8573d6000803e3d6000fd5b5050505050509250929050565b6001600160a01b0383166000908152600f602052604081205480613dfd576001915050610b12565b6001600160a01b0385166000908152600e602052604090205480613e2657600092505050610b12565b613e2e614a91565b5060408051808201909152600d546001600160801b03808216808452600160801b909204166020830181905290613e6c908790611c8b908790614555565b81613e7357fe5b600754919004906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169163566231189116613ed38a613ebe57620124f8613ec3565b62012cc85b611c8b886509184e72a000614555565b60006040518463ffffffff1660e01b8152600401613ef393929190615832565b60206040518083038186803b158015613f0b57600080fd5b505afa158015613f1f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613f439190615388565b1015979650505050505050565b600080841215613f70576000198414613f695781613f6b565b825b610ab9565b509192915050565b336000908152600e6020526040902054613f929082614532565b336000908152600e6020526040902055600b54613faf9082614532565b600b556040516001600160a01b0383169033907f8ad4d3ff00da092c7ad9a573ea4f5f6a3dffc6712dc06d3f78f49b862297c40290613fef9085906155de565b60405180910390a3600754604051633c6340f360e21b81526001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169263f18d03cc9261405092919091169030908790879060040161570f565b600060405180830381600087803b15801561406a57600080fd5b505af115801561407e573d6000803e3d6000fd5b505050505050565b600080600080600080898060200190518101906140a391906150c2565b93509350935093506140b6828989613f50565b91506140c3818989613f50565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166302b9446c8a86338787876040518763ffffffff1660e01b815260040161411a959493929190615739565b60408051808303818588803b15801561413257600080fd5b505af1158015614146573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061416b91906153a0565b955095505050505094509492505050565b6000806000806000808880602001905181019061419991906150c2565b93509350935093507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166397da6d308533866141de878e8e613f50565b6141e9878f8f613f50565b6040518663ffffffff1660e01b8152600401614209959493929190615739565b6040805180830381600087803b15801561422257600080fd5b505af1158015614236573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061425a91906153a0565b9550955050505050935093915050565b6060600080606060008060008980602001905181019061428a9190614c89565b9450945094509450945082801561429f575081155b156142cd5783896040516020016142b7929190615443565b6040516020818303038152906040529350614326565b821580156142d85750815b156142f05783886040516020016142b7929190615443565b8280156142fa5750815b156143265783898960405160200161431493929190615465565b60405160208183030381529060405293505b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316856001600160a01b03161415801561437157506001600160a01b0385163014155b61438d5760405162461bcd60e51b815260040161097390615a77565b60006060866001600160a01b03168d876040516143aa9190615427565b60006040518083038185875af1925050503d80600081146143e7576040519150601f19603f3d011682016040523d82523d6000602084013e6143ec565b606091505b50915091508161440e5760405162461bcd60e51b815260040161097390615975565b9c919b50909950505050505050505050565b600083602001516001600160801b03166000141561443f575081610b12565b602084015184516001600160801b039182169161445e91869116614555565b8161446557fe5b0490508180156144a957508284600001516001600160801b031661449f86602001516001600160801b03168461455590919063ffffffff16565b816144a657fe5b04105b15610b1257610ab9816001613ac4565b82516000906001600160801b03166144d2575081610b12565b835160208501516001600160801b03918216916144f191869116614555565b816144f857fe5b0490508180156144a957508284602001516001600160801b031661449f86600001516001600160801b03168461455590919063ffffffff16565b80820382811115610a9e5760405162461bcd60e51b815260040161097390615879565b60008115806145705750508082028282828161456d57fe5b04145b610a9e5760405162461bcd60e51b815260040161097390615c72565b60006001600160801b038211156145b55760405162461bcd60e51b8152600401610973906159a5565b5090565b8082036001600160801b038084169082161115610a9e5760405162461bcd60e51b815260040161097390615879565b8181016001600160801b038083169082161015610a9e5760405162461bcd60e51b8152600401610973906159dc565b80156146935761466f827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f7888aec87306040518363ffffffff1660e01b81526004016121669291906156f5565b83111561468e5760405162461bcd60e51b815260040161097390615c04565b614718565b604051633c6340f360e21b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063f18d03cc906146e590879033903090899060040161570f565b600060405180830381600087803b1580156146ff57600080fd5b505af1158015614713573d6000803e3d6000fd5b505050505b50505050565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009183916001600160a01b0386169161318e9190615427565b600060405180604001604052806002815260200161190160f01b81525061478a610c9e565b83604051602001613aa793929190615465565b606060408251106147c357818060200190518101906147bc9190615314565b9050613207565b8151602014156148e25760005b60208160ff161080156147ff5750828160ff16815181106147ed57fe5b01602001516001600160f81b03191615155b1561480c576001016147d0565b60608160ff166001600160401b038111801561482757600080fd5b506040519080825280601f01601f191660200182016040528015614852576020820181803683370190505b509050600091505b60208260ff161080156148895750838260ff168151811061487757fe5b01602001516001600160f81b03191615155b156148d957838260ff168151811061489d57fe5b602001015160f81c60f81b818360ff16815181106148b757fe5b60200101906001600160f81b031916908160001a90535060019091019061485a565b91506132079050565b506040805180820190915260038152623f3f3f60e81b6020820152613207565b61490a614a91565b6000614917858585614420565b90506149366149258261458c565b86516001600160801b0316906145b9565b6001600160801b0316855261496161494d8561458c565b60208701516001600160801b0316906145b9565b6001600160801b03166020860152939492505050565b61497f614a91565b61498b612d408461458c565b6001600160801b031684526149a261357d8361458c565b6001600160801b03166020850152509192915050565b6149c0614a91565b60006149cd8585856144b9565b90506149ec6149db8561458c565b86516001600160801b0316906145e8565b6001600160801b03168552614961614a038261458c565b60208701516001600160801b0316906145e8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10614a5857805160ff1916838001178555614a85565b82800160010185558215614a85579182015b82811115614a85578251825591602001919060010190614a6a565b506145b5929150614ac8565b604080518082019091526000808252602082015290565b604080516060810182526000808252602082018190529181019190915290565b5b808211156145b55760008155600101614ac9565b8035610a9e81615e6c565b60008083601f840112614af9578182fd5b5081356001600160401b03811115614b0f578182fd5b6020830191508360208083028501011115610f3757600080fd5b600082601f830112614b39578081fd5b8135614b4c614b4782615df2565b615dcc565b818152915060208083019084810181840286018201871015614b6d57600080fd5b60005b84811015614b8c57813584529282019290820190600101614b70565b505050505092915050565b600082601f830112614ba7578081fd5b8151614bb5614b4782615e11565b9150808252836020828501011115614bcc57600080fd5b614bdd816020840160208601615e40565b5092915050565b600060208284031215614bf5578081fd5b8135610b1281615e6c565b600060208284031215614c11578081fd5b8151610b1281615e6c565b60008060008060008060c08789031215614c34578182fd5b8635614c3f81615e6c565b95506020870135614c4f81615e6c565b94506040870135614c5f81615e84565b93506060870135614c6f81615ea7565b9598949750929560808101359460a0909101359350915050565b600080600080600060a08688031215614ca0578283fd5b8551614cab81615e6c565b60208701519095506001600160401b03811115614cc6578384fd5b614cd288828901614b97565b9450506040860151614ce381615e84565b6060870151909350614cf481615e84565b6080870151909250614d0581615ea7565b809150509295509295909350565b60008060408385031215614d25578182fd5b8235614d3081615e6c565b91506020830135614d4081615e6c565b809150509250929050565b600080600060608486031215614d5f578081fd5b8335614d6a81615e6c565b92506020840135614d7a81615e6c565b929592945050506040919091013590565b600080600080600080600060e0888a031215614da5578485fd5b8735614db081615e6c565b96506020880135614dc081615e6c565b955060408801359450606088013593506080880135614dde81615ea7565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215614e0f578081fd5b8335614e1a81615e6c565b92506020840135614e2a81615e84565b91506040840135614e3a81615e84565b809150509250925092565b600080600060608486031215614e59578081fd5b8335614e6481615e6c565b92506020840135614d7a81615e84565b60008060408385031215614e86578182fd5b8235614e9181615e6c565b946020939093013593505050565b600080600080600080600060a0888a031215614eb9578081fd5b87356001600160401b0380821115614ecf578283fd5b614edb8b838c01614ae8565b909950975060208a0135915080821115614ef3578283fd5b50614f008a828b01614ae8565b9096509450506040880135614f1481615e6c565b92506060880135614f2481615e6c565b91506080880135614f3481615e84565b8091505092959891949750929550565b60008060008060008060608789031215614f5c578384fd5b86356001600160401b0380821115614f72578586fd5b614f7e8a838b01614ae8565b90985096506020890135915080821115614f96578586fd5b614fa28a838b01614ae8565b90965094506040890135915080821115614fba578384fd5b50614fc789828a01614ae8565b979a9699509497509295939492505050565b600060208284031215614fea578081fd5b8151610b1281615e84565b60008060408385031215615007578182fd5b825161501281615e84565b6020939093015192949293505050565b600080600060608486031215615036578081fd5b833561504181615e84565b95602085013595506040909401359392505050565b60008060208385031215615068578182fd5b82356001600160401b038082111561507e578384fd5b818501915085601f830112615091578384fd5b81358181111561509f578485fd5b8660208285010111156150b0578485fd5b60209290920196919550909350505050565b600080600080608085870312156150d7578182fd5b84516150e281615e6c565b60208601519094506150f381615e6c565b6040860151606090960151949790965092505050565b60008060006060848603121561511d578081fd5b833561512881615e6c565b92506020848101356001600160401b0380821115615144578384fd5b818701915087601f830112615157578384fd5b8135615165614b4782615df2565b81815284810190848601868402860187018c1015615181578788fd5b8795505b838610156151ab576151978c82614add565b835260019590950194918601918601615185565b509650505060408701359250808311156151c3578384fd5b50506151d186828701614b29565b9150509250925092565b600080600080608085870312156151f0578182fd5b84356151fb81615e6c565b9350602085013561520b81615e6c565b9250604085013561521b81615e6c565b915060608501356001600160401b03811115615235578182fd5b8501601f81018713615245578182fd5b8035615253614b4782615e11565b818152886020838501011115615267578384fd5b81602084016020830137908101602001929092525092959194509250565b60008060408385031215615297578182fd5b82356152a281615e6c565b91506020830135614d4081615e84565b6000602082840312156152c3578081fd5b5035919050565b600080604083850312156152dc578182fd5b823591506020830135614d4081615e6c565b600080600060608486031215615302578081fd5b833592506020840135614e2a81615e6c565b600060208284031215615325578081fd5b81516001600160401b0381111561533a578182fd5b610ab984828501614b97565b600060408284031215615357578081fd5b6153616040615dcc565b825161536c81615e92565b8152602083015161537c81615e92565b60208201529392505050565b600060208284031215615399578081fd5b5051919050565b600080604083850312156153b2578182fd5b505080516020909101519092909150565b6000602082840312156153d4578081fd5b8135610b1281615ea7565b6000602082840312156153f0578081fd5b8151610b1281615ea7565b60008151808452615413816020860160208601615e40565b601f01601f19169290920160200192915050565b60008251615439818460208701615e40565b9190910192915050565b60008351615455818460208801615e40565b9190910191825250602001919050565b60008451615477818460208901615e40565b91909101928352506020820152604001919050565b600071025b0b9b4349026b2b234bab6902934b9b5960751b825284516154b9816012850160208901615e40565b602f60f81b60129184019182015284516154da816013840160208901615e40565b602d60f81b6013929091019182015283516154fc816014840160208801615e40565b0160140195945050505050565b6000616b6d60f01b82528451615526816002850160208901615e40565b602f60f81b6002918401918201528451615547816003840160208901615e40565b602d60f81b600392909101918201528351615569816004840160208801615e40565b0160040195945050505050565b6001600160a01b0391909116815260200190565b6001600160a01b039687168152949095166020850152911515604084015260ff166060830152608082015260a081019190915260c00190565b901515815260200190565b9115158252602082015260400190565b90815260200190565b9586526001600160a01b0394851660208701529290931660408501526060840152608083019190915260a082015260c00190565b92835260208301919091526001600160a01b0316604082015260600190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252610b1260208301846153fb565b6000602080830181845282855460018082166000811461569257600181146156b0576156e8565b60028304607f16855260ff19831660408901526060880193506156e8565b600283048086526156c08a615e34565b885b828110156156de5781548b8201604001529084019088016156c2565b8a01604001955050505b5091979650505050505050565b6001600160a01b0392831681529116602082015260400190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b60006080820160018060a01b0380881684526020818816818601526080604086015282875180855260a0870191508289019450855b818110156157c05785518516835294830194918301916001016157a2565b50508581036060870152865180825290820193509150808601845b838110156157f7578151855293820193908201906001016157db565b50929998505050505050505050565b6001600160a01b039390931683526001600160801b039190911660208301521515604082015260600190565b6001600160a01b0393909316835260208301919091521515604082015260600190565b93845260208401929092526001600160401b03166040830152606082015260800190565b602080825260159082015274426f72696e674d6174683a20556e646572666c6f7760581b604082015260600190565b6020808252601e908201527f4b61736869506169723a20616c726561647920696e697469616c697a65640000604082015260600190565b60208082526016908201527545524332303a206e6f207a65726f206164647265737360501b604082015260600190565b6020808252601a908201527f4b61736869506169723a20616c6c2061726520736f6c76656e74000000000000604082015260600190565b6020808252601590820152744f776e61626c653a207a65726f206164647265737360581b604082015260600190565b60208082526016908201527512d85cda1a54185a5c8e8818d85b1b0819985a5b195960521b604082015260600190565b6020808252601c908201527f426f72696e674d6174683a2075696e74313238204f766572666c6f7700000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a20416464204f766572666c6f770000000000000000604082015260600190565b60208082526013908201527225b0b9b434a830b4b91d103130b2103830b4b960691b604082015260600190565b60208082526018908201527f45524332303a20616c6c6f77616e636520746f6f206c6f770000000000000000604082015260600190565b60208082526015908201527412d85cda1a54185a5c8e8818d85b89dd0818d85b1b605a1b604082015260600190565b6020808252600e908201526d115490cc8c0e88115e1c1a5c995960921b604082015260600190565b60208082526019908201527f4b61736869506169723a207573657220696e736f6c76656e7400000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c657220213d2070656e64696e67206f776e6572604082015260600190565b60208082526018908201527f45524332303a204f776e65722063616e6e6f7420626520300000000000000000604082015260600190565b6020808252601490820152734b617368693a2062656c6f77206d696e696d756d60601b604082015260600190565b60208082526016908201527545524332303a2062616c616e636520746f6f206c6f7760501b604082015260600190565b60208082526018908201527f4b61736869506169723a20536b696d20746f6f206d7563680000000000000000604082015260600190565b6020808252601a908201527f4b61736869506169723a20496e76616c69642073776170706572000000000000604082015260600190565b60208082526018908201527f426f72696e674d6174683a204d756c204f766572666c6f770000000000000000604082015260600190565b6020808252601690820152754b61736869506169723a2072617465206e6f74206f6b60501b604082015260600190565b60208082526018908201527f45524332303a20496e76616c6964205369676e61747572650000000000000000604082015260600190565b6001600160801b0392831681529116602082015260400190565b918252602082015260400190565b9283526020830191909152604082015260600190565b6001600160401b0393841681529190921660208201526001600160801b03909116604082015260600190565b60ff91909116815260200190565b6000808335601e19843603018112615d9e578283fd5b8301803591506001600160401b03821115615db7578283fd5b602001915036819003821315610f3757600080fd5b6040518181016001600160401b0381118282101715615dea57600080fd5b604052919050565b60006001600160401b03821115615e07578081fd5b5060209081020190565b60006001600160401b03821115615e26578081fd5b50601f01601f191660200190565b60009081526020902090565b60005b83811015615e5b578181015183820152602001615e43565b838111156147185750506000910152565b6001600160a01b0381168114615e8157600080fd5b50565b8015158114615e8157600080fd5b6001600160801b0381168114615e8157600080fd5b60ff81168114615e8157600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212207929f4e53572eaa785f36f24a5efe1b0f40c011ec5aca2ea348cb1de49bae0ff64736f6c634300060c00330000000000000000000000000319000133d3ada02600f0875d2cf03d442c3367