0 txs
0 calls
constructor
No constructor.
functions
activeField
viewfunction activeField() view returns (uint256)
balanceOfPods
viewfunction balanceOfPods(address account, uint256 fieldId) view returns (uint256 pods)
fieldCount
viewfunction fieldCount() view returns (uint256)
floodHarvestablePods
viewfunction floodHarvestablePods() view returns (uint256)
getPlotIndexesFromAccount
viewfunction getPlotIndexesFromAccount(address account, uint256 fieldId) view returns (uint256[] plotIndexes)
getPlotsFromAccount
viewfunction getPlotsFromAccount(address account, uint256 fieldId) view returns (tuple[] plots)
harvestableIndex
viewfunction harvestableIndex(uint256 fieldId) view returns (uint256)
initialSoil
viewfunction initialSoil() view returns (uint256)
isHarvesting
viewfunction isHarvesting(uint256 fieldId) view returns (bool)
maxTemperature
viewfunction maxTemperature() view returns (uint256)
plot
viewfunction plot(address account, uint256 fieldId, uint256 index) view returns (uint256)
podIndex
viewfunction podIndex(uint256 fieldId) view returns (uint256)
remainingPods
viewfunction remainingPods() view returns (uint256)
temperature
viewfunction temperature() view returns (uint256)
totalHarvestable
viewfunction totalHarvestable(uint256 fieldId) view returns (uint256)
totalHarvestableForActiveField
viewfunction totalHarvestableForActiveField() view returns (uint256)
totalHarvested
viewfunction totalHarvested(uint256 fieldId) view returns (uint256)
totalPods
viewfunction totalPods(uint256 fieldId) view returns (uint256)
totalSoil
viewfunction totalSoil() view returns (uint256)
totalUnharvestable
viewfunction totalUnharvestable(uint256 fieldId) view returns (uint256)
totalUnharvestableForActiveField
viewfunction totalUnharvestableForActiveField() view returns (uint256)
addField
nonpayablefunction addField()
harvest
payablefunction harvest(uint256 fieldId, uint256[] plots, uint8 mode) payable returns (uint256 beansHarvested)
setActiveField
nonpayablefunction setActiveField(uint256 fieldId, uint32 _temperature)
sow
payablefunction sow(uint256 beans, uint256 minTemperature, uint8 mode) payable returns (uint256 pods)
sowWithMin
payablefunction sowWithMin(uint256 beans, uint256 minTemperature, uint256 minSoil, uint8 mode) payable returns (uint256 pods)
events
ActiveFieldSet
event ActiveFieldSet(uint256 fieldId)
FieldAdded
event FieldAdded(uint256 fieldId)
Harvest
event Harvest(address indexed account, uint256 fieldId, uint256[] plots, uint256 beans)
InternalBalanceChanged
event InternalBalanceChanged(address indexed account, address indexed token, int256 delta)
PodListingCancelled
event PodListingCancelled(address indexed lister, uint256 fieldId, uint256 index)
Sow
event Sow(address indexed account, uint256 fieldId, uint256 index, uint256 beans, uint256 pods)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
FailedInnerCall
error FailedInnerCall()
PRBMath__MulDivOverflow
error PRBMath__MulDivOverflow(uint256 prod1, uint256 denominator)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
creation bytecode
0x6080604052348015600e575f80fd5b50613d6a8061001c5f395ff3fe60806040526004361061015d575f3560e01c80639a337c1d116100be578063bb485bbd11610078578063bb485bbd146103af578063ccda40b9146103c3578063d1eba544146103ed578063d725457714610401578063e9bbb0331461041e578063f1e0a21114610431578063f29ffe9414610450575f80fd5b80639a337c1d146103085780639ee7ea1214610327578063adccea1214610346578063b511654d1461035a578063b603272114610387578063b94e871c1461039b575f80fd5b8063352525a61161011a578063352525a61461021b5780634bea67c4146102485780635487cc4514610277578063553030d01461029457806356ba3e24146102a75780637907091f146102bb57806391b24284146102dc575f80fd5b8063057c571b14610161578063237dbac514610182578063253fcfb5146101a95780632e76f597146101d55780633285008a146101f457806332ab68ce14610208575b5f80fd5b34801561016c575f80fd5b5061018061017b366004613693565b61046f565b005b34801561018d575f80fd5b506101966107bf565b6040519081526020015b60405180910390f35b3480156101b4575f80fd5b506101c86101c33660046136dd565b6107e8565b6040516101a09190613707565b3480156101e0575f80fd5b506101966101ef36600461374a565b61085f565b3480156101ff575f80fd5b50610196610880565b610196610216366004613774565b6108d1565b348015610226575f80fd5b5061019661023536600461374a565b5f90815260208052604090206001015490565b348015610253575f80fd5b5061026761026236600461374a565b610b6a565b60405190151581526020016101a0565b348015610282575f80fd5b506006546001600160801b0316610196565b6101966102a23660046137a6565b610b7c565b3480156102b2575f80fd5b50610196610e16565b3480156102c6575f80fd5b5060e154600160c01b900463ffffffff16610196565b3480156102e7575f80fd5b506102fb6102f63660046136dd565b610e1f565b6040516101a091906137e2565b348015610313575f80fd5b506101966103223660046136dd565b610f95565b348015610332575f80fd5b50610196610341366004613830565b611072565b348015610351575f80fd5b506101966110a6565b348015610365575f80fd5b5061019661037436600461374a565b5f90815260208052604090206002015490565b348015610392575f80fd5b506101966110af565b3480156103a6575f80fd5b506101806110cf565b3480156103ba575f80fd5b50600854610196565b3480156103ce575f80fd5b506101966103dd36600461374a565b5f90815260208052604090205490565b3480156103f8575f80fd5b50600754610196565b34801561040c575f80fd5b5060ee546001600160801b0316610196565b61019661042c366004613862565b611388565b34801561043c575f80fd5b5061019661044b36600461374a565b611634565b34801561045b575f80fd5b5061019661046a36600461374a565b611651565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa1580156104b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104da91906138ef565b60c4549091505f6104e961166e565b90505f6104f58261179d565b600354909150600119016105245760405162461bcd60e51b815260040161051b90613906565b60405180910390fd5b600260035561053161189e565b60085486106105825760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a204669656c6420646f6573206e6f742065786973740000000000604482015260640161051b565b600786905560e1805463ffffffff60801b63ffffffff60a01b67ffffffffffffffff60a01b19909216600160c01b63ffffffff8a160263ffffffff60a01b191617919091176001600160a01b0319161790556040518681527f321faeb9c95b0ccaaaea362d3b3661a45664fa7150bbffc794abe79b6f3492769060200160405180910390a160016003555f6106168361179d565b9050835f60c40154101561063c5760405162461bcd60e51b815260040161051b9061393d565b5f5b83518110156106a05781818151811061065957610659613974565b602002602001015183828151811061067357610673613974565b6020026020010151146106985760405162461bcd60e51b815260040161051b90613988565b60010161063e565b5050505050806106ad5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156106f6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061071a91906138ef565b146107375760405162461bcd60e51b815260040161051b906139cc565b505f61074161166e565b90505f8061074e83611934565b915091505f5b83518110156107b75782818151811061076f5761076f613974565b602002602001015182828151811061078957610789613974565b602002602001015110156107af5760405162461bcd60e51b815260040161051b906139f9565b600101610754565b505050505050565b6007545f908152602080526040812060018101546002909101546107e39190613a44565b905090565b6001600160a01b0382165f9081526020818152604080832084845260150182529182902060020180548351818402810184019094528084526060939283018282801561085157602002820191905f5260205f20905b81548152602001906001019080831161083d575b505050505090505b92915050565b5f818152602080526040812060018101546002909101546108599190613a44565b60d4545f90600160c81b900460ff166108a357506006546001600160801b031690565b60065460e1546107e3916001600160801b031690600160c01b900463ffffffff166108cc611d34565b611fce565b5f808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa15801561091d573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061094191906138ef565b6001549091506001600160a01b03165f61095961166e565b90505f6109658261179d565b6003549091506001190161098b5760405162461bcd60e51b815260040161051b90613906565b600260035561099c8888818961200b565b945060016003555f6109ad8361179d565b90505f5b8351811015610a4757846001600160a01b03168482815181106109d6576109d6613974565b60200260200101516001600160a01b03160315610a3f578181815181106109ff576109ff613974565b6020026020010151838281518110610a1957610a19613974565b60200260200101511115610a3f5760405162461bcd60e51b815260040161051b90613a57565b6001016109b1565b505050505080610a545f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610a9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ac191906138ef565b1115610adf5760405162461bcd60e51b815260040161051b90613aa8565b505f610ae961166e565b90505f80610af683611934565b915091505f5b8351811015610b5f57828181518110610b1757610b17613974565b6020026020010151828281518110610b3157610b31613974565b60200260200101511015610b575760405162461bcd60e51b815260040161051b906139f9565b600101610afc565b505050509392505050565b5f80610b7583611651565b1192915050565b5f808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610bc8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bec91906138ef565b6001549091506001600160a01b03165f610c0461166e565b90505f610c108261179d565b60035490915060011901610c365760405162461bcd60e51b815260040161051b90613906565b6002600355610c478989898961200b565b945060016003555f610c588361179d565b90505f5b8351811015610cf257846001600160a01b0316848281518110610c8157610c81613974565b60200260200101516001600160a01b03160315610cea57818181518110610caa57610caa613974565b6020026020010151838281518110610cc457610cc4613974565b60200260200101511115610cea5760405162461bcd60e51b815260040161051b90613a57565b600101610c5c565b505050505080610cff5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015610d48573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d6c91906138ef565b1115610d8a5760405162461bcd60e51b815260040161051b90613aa8565b505f610d9461166e565b90505f80610da183611934565b915091505f5b8351811015610e0a57828181518110610dc257610dc2613974565b6020026020010151828281518110610ddc57610ddc613974565b60200260200101511015610e025760405162461bcd60e51b815260040161051b906139f9565b600101610da7565b50505050949350505050565b5f6107e36120e4565b6001600160a01b0382165f908152602081815260408083208484526015018252808320600201805482518185028101850190935280835260609493830182828015610e8757602002820191905f5260205f20905b815481526020019060010190808311610e73575b5050505050905080515f03610e9c5750610859565b80516001600160401b03811115610eb557610eb5613ad7565b604051908082528060200260200182016040528015610ef957816020015b604080518082019091525f8082526020820152815260200190600190039081610ed35790505b5091505f5b8151811015610f8d575f828281518110610f1a57610f1a613974565b6020908102919091018101516040805180820182528281526001600160a01b038a165f9081528085528281208a8252601501855282812084825285529190912054928101929092528551909250859084908110610f7957610f79613974565b602090810291909101015250600101610efe565b505092915050565b6001600160a01b0382165f90815260208181526040808320848452601501825280832060020180548251818502810185019093528083528493830182828015610ffb57602002820191905f5260205f20905b815481526020019060010190808311610fe7575b505050505090505f5b8151811015610f8d576001600160a01b0385165f908152602081815260408083208784526015019091528120835190919084908490811061104757611047613974565b602002602001015181526020019081526020015f2054836110689190613aeb565b9250600101611004565b6001600160a01b0383165f9081526020818152604080832085845260150182528083208484529091529020545b9392505050565b5f6107e3611d34565b6007545f9081526020805260408120600281015490546107e39190613a44565b600154604080516318160ddd60e01b815290515f926001600160a01b0316916318160ddd9160048083019260209291908290030181865afa158015611116573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061113a91906138ef565b60c4549091505f61114961166e565b90505f6111558261179d565b6003549091506001190161117b5760405162461bcd60e51b815260040161051b90613906565b600260035561118861189e565b600880549081905f61119983613afe565b90915550506040518181527fe0787a1e9106428db986fa2956ffad041bbaad7f5b962f942a0a59c20f91288e9060200160405180910390a15060016003555f6111e18361179d565b9050835f60c4015410156112075760405162461bcd60e51b815260040161051b9061393d565b5f5b835181101561126b5781818151811061122457611224613974565b602002602001015183828151811061123e5761123e613974565b6020026020010151146112635760405162461bcd60e51b815260040161051b90613988565b600101611209565b5050505050806112785f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156112c1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112e591906138ef565b146113025760405162461bcd60e51b815260040161051b906139cc565b505f61130c61166e565b90505f8061131983611934565b915091505f5b83518110156113825782818151811061133a5761133a613974565b602002602001015182828151811061135457611354613974565b6020026020010151101561137a5760405162461bcd60e51b815260040161051b906139f9565b60010161131f565b50505050565b5f808060010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa1580156113d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113f891906138ef565b6001549091506001600160a01b03165f61141061166e565b90505f61141c8261179d565b600354909150600119016114425760405162461bcd60e51b815260040161051b90613906565b6002600355611452898989612149565b600154909550611474906001600160a01b03168661146e612287565b896122d2565b60016003555f6114838361179d565b90505f5b835181101561151d57846001600160a01b03168482815181106114ac576114ac613974565b60200260200101516001600160a01b03160315611515578181815181106114d5576114d5613974565b60200260200101518382815181106114ef576114ef613974565b602002602001015111156115155760405162461bcd60e51b815260040161051b90613a57565b600101611487565b50505050508061152a5f90565b60010154604080516318160ddd60e01b815290516001600160a01b03909216916318160ddd916004808201926020929091908290030181865afa158015611573573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061159791906138ef565b146115b45760405162461bcd60e51b815260040161051b906139cc565b505f6115be61166e565b90505f806115cb83611934565b915091505f5b8351811015610e0a578281815181106115ec576115ec613974565b602002602001015182828151811061160657611606613974565b6020026020010151101561162c5760405162461bcd60e51b815260040161051b906139f9565b6001016115d1565b5f8181526020805260408120600181015490546108599190613a44565b5f8181526020805260408120600281015490546108599190613a44565b60605f611679612315565b90505f611684612416565b90505f815183516116959190613aeb565b9050806001600160401b038111156116af576116af613ad7565b6040519080825280602002602001820160405280156116d8578160200160208202803683370190505b5093505f5b8351811015611732578381815181106116f8576116f8613974565b602002602001015185828151811061171257611712613974565b6001600160a01b03909216602092830291909101909101526001016116dd565b505f5b82518110156117965782818151811061175057611750613974565b6020026020010151858286516117669190613aeb565b8151811061177657611776613974565b6001600160a01b0390921660209283029190910190910152600101611735565b5050505090565b606081516001600160401b038111156117b8576117b8613ad7565b6040519080825280602002602001820160405280156117e1578160200160208202803683370190505b5090505f5b82518110156118985782818151811061180157611801613974565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016118349190613b16565b602060405180830381865afa15801561184f573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061187391906138ef565b82828151811061188557611885613974565b60209081029190910101526001016117e6565b50919050565b7fc8fcad8db84d3cc18b4c41d551ea0ee66dd599cde068d998e57d5e09332c131c600401546001600160a01b03163314806118d857503330145b6119325760405162461bcd60e51b815260206004820152602560248201527f4c69624469616d6f6e643a204d75737420626520636f6e7472616374206f722060448201526437bbb732b960d91b606482015260840161051b565b565b6060805f83516001600160401b0381111561195157611951613ad7565b60405190808252806020026020018201604052801561197a578160200160208202803683370190505b50925083516001600160401b0381111561199657611996613ad7565b6040519080825280602002602001820160405280156119bf578160200160208202803683370190505b5091505f5b8451811015611d2d5781600101601b015f8683815181106119e7576119e7613974565b6020908102919091018101516001600160a01b031682528101919091526040015f908120549060ca840190600181526020019081526020015f205f878481518110611a3457611a34613974565b6020908102919091018101516001600160a01b031682528101919091526040015f908120546001600160801b03169060ca8501908081526020019081526020015f205f888581518110611a8957611a89613974565b6020908102919091018101516001600160a01b031682528101919091526040015f9081205488516001600160801b039091169160c78701918a9087908110611ad357611ad3613974565b6020908102919091018101516001600160a01b031682528101919091526040015f2054611b0991906001600160801b0316613b3e565b611b139190613b3e565b6001600160801b0316611b269190613aeb565b848281518110611b3857611b38613974565b6020908102919091010152600182015485516001600160a01b0390911690869083908110611b6857611b68613974565b60200260200101516001600160a01b031603611c14578160010160080154848281518110611b9857611b98613974565b60200260200101818151611bac9190613aeb565b9052505f5b6008830154811015611c12575f81815260208085019052604090206001810154600290910154611be19190613a44565b858381518110611bf357611bf3613974565b60200260200101818151611c079190613aeb565b905250600101611bb1565b505b81600101610101015f015f868381518110611c3157611c31613974565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f2054848281518110611c6b57611c6b613974565b60200260200101818151611c7f9190613aeb565b9052508451859082908110611c9657611c96613974565b60200260200101516001600160a01b03166370a08231306040518263ffffffff1660e01b8152600401611cc99190613b16565b602060405180830381865afa158015611ce4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d0891906138ef565b838281518110611d1a57611d1a613974565b60209081029190910101526001016119c4565b5050915091565b60d4545f9081908190611d7890600290611d72906104b090829060c890611d6c904390600160881b90046001600160401b0316612482565b9061248d565b90612498565b90506018811115611d9a575060e10154600160c01b900463ffffffff16919050565b600d811015611ec8576007811015611e49576004811015611e0e576002811015611dea576001811015611ddc57611dd56402540be4006124a3565b9250505090565b611dd56411b6b858506124a3565b80600203611e0057611dd56421e2985ebb6124a3565b611dd56430c2e93ee86124a3565b6006811015611e3b5780600403611e2d57611dd5643e88dc65e46124a3565b611dd5644b5b7111856124a3565b611dd564575a1744866124a3565b600a811015611e8d576009811015611e7f5780600703611e7157611dd564629e85bf7a6124a3565b611dd5646d3e0970416124a3565b611dd564774a7a11546124a3565b600c811015611eba5780600a03611eac57611dd56480d2eff7516124a3565b611dd56489e44d776a6124a3565b611dd5649289a84fa16124a3565b6013811015611f50576010811015611f1557600f811015611f075780600d03611ef957611dd5649acc9b9bce6124a3565b611dd564a2b588560c6124a3565b611dd564aa4bc8aa1b6124a3565b6012811015611f425780601003611f3457611dd564b195d936396124a3565b611dd564b8997a81c66124a3565b611dd564bf5bcc5d356124a3565b6016811015611f94576015811015611f865780601303611f7857611dd564c5e16473af6124a3565b611dd564cc2e6108d66124a3565b611dd564d24678a3926124a3565b60178111611fc05780601603611fb257611dd564d82d073bd76124a3565b611dd564dde51961276124a3565b611dd564e37175b6cb6124a3565b5f612003611fea611fe3620f42406064613b65565b85906124d9565b611ffb611fe3620f42406064613b65565b8691906124e4565b949350505050565b5f805f806120176125ac565b92509250925085831015801561202d5750858810155b6120705760405162461bcd60e51b81526020600482015260146024820152734669656c643a20536f696c20536c69707061676560601b604482015260640161051b565b868210156120c05760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a2054656d706572617475726520536c6970706167650000000000604482015260640161051b565b828810156120cc578792505b6120d88383838861261a565b98975050505050505050565b60d4545f908190600160c81b900460ff161561212a57600681015460e1820154612124916001600160801b031690600160c01b900463ffffffff166126ae565b91505090565b6006810154612124906001600160801b0316612144611d34565b6126ae565b5f805b8281101561220c575f85815260208052604090206002015484848381811061217657612176613974565b90506020020135106121ca5760405162461bcd60e51b815260206004820152601b60248201527f4669656c643a20506c6f74206e6f74204861727665737461626c650000000000604482015260640161051b565b5f6121f56121d6612287565b878787868181106121e9576121e9613974565b905060200201356126e0565b90506122018184613aeb565b92505060010161214c565b505f8481526020805260408120600101805483929061222c908490613aeb565b9091555061223a9050612287565b6001600160a01b03167f291f1f0a12949a2a5e0e2a43aa545e7f90b9ea1de10409a053002c795e2329f6858585856040516122789493929190613b7c565b60405180910390a29392505050565b5f6122b97f7efbaaac9214ca1879e26b4df38e29a72561affb741bba775ce66d5bb6a82a09546001600160a01b031690565b905060016001600160a01b038216116122cf5750335b90565b82156113825760018160018111156122ec576122ec613b2a565b03612301576122fc82858561286a565b611382565b6113826001600160a01b038516838561289f565b60c9546060905f9081816001600160401b0381111561233657612336613ad7565b60405190808252806020026020018201604052801561235f578160200160208202803683370190505b5093505f5b8281101561240c5760c9840180548290811061238257612382613974565b5f91825260209091200154600160a01b900460ff16156124045760c984018054829081106123b2576123b2613974565b5f918252602090912001546001600160a01b031685836123d181613afe565b9450815181106123e3576123e3613974565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612364565b5080845250505090565b60605f612421612903565b90505f5b81518110156118985761245082828151811061244357612443613974565b60200260200101516129fa565b82828151811061246257612462613974565b6001600160a01b0390921660209283029190910190910152600101612425565b5f61109f8284613a44565b5f61109f8284613b65565b5f61109f8284613bd4565b60e1545f908190600160c01b900463ffffffff168082036124c757505f9392505050565b612003818564e8d4a510006001612a8a565b5f61109f8284613aeb565b5f80805f19858709858702925082811083820303915050805f0361251b5783828161251157612511613bc0565b049250505061109f565b83811061254557604051631dcf306360e21b8152600481018290526024810185905260440161051b565b5f8486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091025f889003889004909101858311909403939093029303949094049190911702949350505050565b5f8080806125b8611d34565b60d4820154909350600160c81b900460ff169150816125e65760068101546001600160801b03169350612614565b600681015460e1820154612611916001600160801b031690600160c01b900463ffffffff1685611fce565b93505b50909192565b6001545f90819061263d906001600160a01b031687612637612287565b86612ae5565b9550612652868661264c612287565b87612bc3565b915061265d86612de4565b600682018054601090612681908490600160801b90046001600160801b0316613b3e565b92506101000a8154816001600160801b0302191690836001600160801b0316021790555050949350505050565b5f61109f6126ca6126c3620f42406064613b65565b84906124d9565b6126d8620f42406064613b65565b8591906124e4565b6001600160a01b0383165f9081526020818152604080832085845260150182528083208484529091528120548061274a5760405162461bcd60e51b815260206004820152600e60248201526d119a595b190e881b9bc81c1b1bdd60921b604482015260640161051b565b5f8481526020805260409020600201546127649084612482565b9150612778612771612287565b8585612e1b565b6001600160a01b0385165f9081526020818152604080832087845260150182528083208684529091528120556127af858585612f0a565b8082106127bd57905061109f565b5f6127c884846124d9565b90506127d48284612482565b6001600160a01b0387165f90815260208181526040808320898452601501808352818420868552808452918420949094556002018054600181810183558285528385209091018690559289905292905290546128309190613a44565b6001600160a01b0387165f908152602081815260408083208984526015018252808320948352600390940190529190912055509392505050565b5f6128758484613008565b90505f61288282846124d9565b905061289885858361289387613034565b613060565b5050505050565b6040516001600160a01b038381166024830152604482018390526128fe91859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061315c565b505050565b60c9546060905f9081816001600160401b0381111561292457612924613ad7565b60405190808252806020026020018201604052801561294d578160200160208202803683370190505b5093505f5b8281101561240c5760c9840180548290811061297057612970613974565b5f91825260209091200154600160b81b900460ff16156129f25760c984018054829081106129a0576129a0613974565b5f918252602090912001546001600160a01b031685836129bf81613afe565b9450815181106129d1576129d1613974565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612952565b5f80826001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612a37573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612a5e9190810190613bfe565b905080612a6a826131b4565b81518110612a7a57612a7a613974565b6020026020010151915050919050565b5f80612a978686866124e4565b90506001836002811115612aad57612aad613b2a565b148015612ac957505f8480612ac457612ac4613bc0565b868809115b15612adc57612ad9600182613aeb565b90505b95945050505050565b5f80826003811115612af957612af9613b2a565b03612b635760405163079cc67960e41b81526001600160a01b038481166004830152602482018690528616906379cc6790906044015f604051808303815f87803b158015612b45575f80fd5b505af1158015612b57573d5f803e3d5ffd5b50505050839050612003565b612b6f85858585613245565b604051630852cd8d60e31b8152600481018290529091506001600160a01b038616906342966c68906024015f604051808303815f87803b158015612bb1575f80fd5b505af1158015610e0a573d5f803e3d5ffd5b6007545f90819081808515612c035760e1840154600160c01b900463ffffffff16612bef8a8a836133cc565b9150612bfb82826126ae565b925050612c12565b5087612c0f81896126ae565b91505b5f8211612c615760405162461bcd60e51b815260206004820152601b60248201527f506f6473206d7573742062652067726561746572207468616e20300000000000604482015260640161051b565b60068401546001600160801b0316811115612c8d576006840180546001600160801b0319169055612cc8565b6006840154612ca5906001600160801b0316826133fc565b6006850180546001600160801b0319166001600160801b03929092169190911790555b5f838152602080860181526040808320546001600160a01b038b16845287835281842087855260150180845282852082865280855292852087905560029092018054600181810183558287528587209091018390559488905291909252549091612d3191613a44565b6001600160a01b0389165f81815260208881526040808320898452601501825280832086845260030182529182902093909355805187815292830184905282018c905260608201859052907fbc306f0d3e2a09c671ab461f3f17c7d67439ddecd71086f1b959f3bf7c99b4b19060800160405180910390a25f84815260208087019052604081208054859290612dc8908490613aeb565b90915550612dd69050613407565b509098975050505050505050565b5f6001600160801b03821115612e17576040516306dfcc6560e41b8152608060048201526024810183905260440161051b565b5090565b6001600160a01b0383165f908152602081815260408083208584526015018252808320848452909152812054612ea55760405162461bcd60e51b815260206004820152602960248201527f4d61726b6574706c6163653a204c697374696e67206e6f74206f776e656420626044820152683c9039b2b73232b91760b91b606482015260840161051b565b5f838152601a82016020908152604080832085845282528083209290925581518581529081018490526001600160a01b038616917f4b0619de736a4127da55b6139ca00a79ef95704d2736332cdee8c8035eb892d3910160405180910390a250505050565b6001600160a01b0383165f90815260208181526040808320858452601501808352818420858552600381018452918420548685529252600281018054612f5290600190613a44565b81548110612f6257612f62613974565b905f5260205f200154816002018381548110612f8057612f80613974565b905f5260205f20018190555081816003015f836002018581548110612fa757612fa7613974565b905f5260205f20015481526020019081526020015f20819055505f19816003015f8681526020019081526020015f208190555080600201805480612fed57612fed613cb1565b600190038181905f5260205f20015f90559055505050505050565b6001600160a01b039182165f90815260208181526040808320939094168252601b909201909152205490565b5f6001600160ff1b03821115612e175760405163123baf0360e11b81526004810183905260240161051b565b5f808212156130b65761309561307583613cc5565b6001600160a01b0386165f908152601c8401602052604090205490612482565b6001600160a01b0385165f908152601c8301602052604090208190556130f7565b6001600160a01b0384165f908152601c820160205260409020546130da90836124d9565b6001600160a01b0385165f908152601c8301602052604090208190555b506001600160a01b038581165f81815260208481526040808320948916808452601b90950182529182902087905590518581527f18e1ea4139e68413d7d08aa752e71568e36b2c5bf940893314c2c5b01eaa0c42910160405180910390a35050505050565b5f6131706001600160a01b0384168361347a565b905080515f141580156131945750808060200190518101906131929190613cdf565b155b156128fe5782604051635274afe760e01b815260040161051b9190613b16565b5f805b8251821015613205578282815181106131d2576131d2613974565b602090810291909101015160018201546001600160a01b039081169116146131fa5750919050565b8160010191506131b7565b60405162461bcd60e51b81526020600482015260156024820152742737b716a132b0b7103737ba1034b7102bb2b6361760591b604482015260640161051b565b5f835f0361325457505f612003565b5f82600381111561326757613267613b2a565b146132b35761328d838686600186600381111561328657613286613b2a565b1415613487565b9050808414806132ae575060038260038111156132ac576132ac613b2a565b145b612003575b6040516370a0823160e01b81525f906001600160a01b038716906370a08231906132e1903090600401613b16565b602060405180830381865afa1580156132fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061332091906138ef565b905061334384306133318589613a44565b6001600160a01b038a16929190613537565b6133c26133bb82886001600160a01b03166370a08231306040518263ffffffff1660e01b81526004016133769190613b16565b602060405180830381865afa158015613391573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133b591906138ef565b90612482565b83906124d9565b9695505050505050565b5f6120036133e1611fe3620f42406064613b65565b6133f2611fe3620f42406064613b65565b8691906001612a8a565b5f61109f8284613cfe565b6006545f90620f42406001600160801b039091161180613438575060e181015463ffffffff600160a01b9091048116105b156134405750565b60d7810154613450904290612482565b60e1909101805463ffffffff92909216600160a01b0263ffffffff60a01b19909216919091179055565b606061109f83835f613570565b5f806134938686613008565b905082806134a15750838110155b6134fc5760405162461bcd60e51b815260206004820152602660248201527f42616c616e63653a20496e73756666696369656e7420696e7465726e616c2062604482015265616c616e636560d01b606482015260840161051b565b61350681856135ff565b91505f6135138383613a44565b905061352d87878361352487613034565b61289390613cc5565b5050949350505050565b6040516001600160a01b0384811660248301528381166044830152606482018390526113829186918216906323b872dd906084016128cc565b606081471015613595573060405163cd78605960e01b815260040161051b9190613b16565b5f80856001600160a01b031684866040516135b09190613d1e565b5f6040518083038185875af1925050503d805f81146135ea576040519150601f19603f3d011682016040523d82523d5f602084013e6135ef565b606091505b50915091506133c2868383613614565b5f81831061360d578161109f565b5090919050565b6060826136295761362482613667565b61109f565b815115801561364057506001600160a01b0384163b155b156136605783604051639996b31560e01b815260040161051b9190613b16565b508061109f565b8051156136775780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f80604083850312156136a4575f80fd5b82359150602083013563ffffffff811681146136be575f80fd5b809150509250929050565b6001600160a01b0381168114613690575f80fd5b5f80604083850312156136ee575f80fd5b82356136f9816136c9565b946020939093013593505050565b602080825282518282018190525f9190848201906040850190845b8181101561373e57835183529284019291840191600101613722565b50909695505050505050565b5f6020828403121561375a575f80fd5b5035919050565b80356004811061376f575f80fd5b919050565b5f805f60608486031215613786575f80fd5b833592506020840135915061379d60408501613761565b90509250925092565b5f805f80608085870312156137b9575f80fd5b8435935060208501359250604085013591506137d760608601613761565b905092959194509250565b602080825282518282018190525f919060409081850190868401855b82811015613823578151805185528601518685015292840192908501906001016137fe565b5091979650505050505050565b5f805f60608486031215613842575f80fd5b833561384d816136c9565b95602085013595506040909401359392505050565b5f805f8060608587031215613875575f80fd5b8435935060208501356001600160401b0380821115613892575f80fd5b818701915087601f8301126138a5575f80fd5b8135818111156138b3575f80fd5b8860208260051b85010111156138c7575f80fd5b6020830195508094505050506040850135600281106138e4575f80fd5b939692955090935050565b5f602082840312156138ff575f80fd5b5051919050565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252601e908201527f494e563a206e6f4e6574466c6f77205374616c6b206465637265617365640000604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b60208082526024908201527f494e563a206e6f4e6574466c6f7720546f6b656e2062616c616e6365206368616040820152631b99d95960e21b606082015260800190565b6020808252601390820152721253958e8814dd5c1c1b1e4818da185b99d959606a1b604082015260600190565b6020808252601f908201527f494e563a20496e73756666696369656e7420746f6b656e2062616c616e636500604082015260600190565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561085957610859613a30565b60208082526031908201527f494e563a206f6e654f7574466c6f77206d756c7469706c6520746f6b656e2062604082015270185b185b98d95cc8191958dc99585cd959607a1b606082015260800190565b6020808252601590820152741253958e8814dd5c1c1b1e481a5b98dc99585cd959605a1b604082015260600190565b634e487b7160e01b5f52604160045260245ffd5b8082018082111561085957610859613a30565b5f60018201613b0f57613b0f613a30565b5060010190565b6001600160a01b0391909116815260200190565b634e487b7160e01b5f52602160045260245ffd5b6001600160801b03818116838216019080821115613b5e57613b5e613a30565b5092915050565b808202811582820484141761085957610859613a30565b84815260606020820181905281018390525f6001600160fb1b03841115613ba1575f80fd5b8360051b80866080850137604083019390935250016080019392505050565b634e487b7160e01b5f52601260045260245ffd5b5f82613bee57634e487b7160e01b5f52601260045260245ffd5b500490565b805161376f816136c9565b5f6020808385031215613c0f575f80fd5b82516001600160401b0380821115613c25575f80fd5b818501915085601f830112613c38575f80fd5b815181811115613c4a57613c4a613ad7565b8060051b604051601f19603f83011681018181108582111715613c6f57613c6f613ad7565b604052918252848201925083810185019188831115613c8c575f80fd5b938501935b828510156120d857613ca285613bf3565b84529385019392850192613c91565b634e487b7160e01b5f52603160045260245ffd5b5f600160ff1b8201613cd957613cd9613a30565b505f0390565b5f60208284031215613cef575f80fd5b8151801515811461109f575f80fd5b6001600160801b03828116828216039080821115613b5e57613b5e613a30565b5f82518060208501845e5f92019182525091905056fea264697066735822122061ebb47f7c532d89e0122889f5132c57057dd020cdda2aa16e5570a370fe6cc964736f6c63430008190033