0 txs
0 calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address account, uint256 depositId) view returns (uint256 amount)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] depositIds) view returns (uint256[])
balanceOfDepositedBdv
viewfunction balanceOfDepositedBdv(address account, address token) view returns (uint256 depositedBdv)
balanceOfEarnedBeans
viewfunction balanceOfEarnedBeans(address account) view returns (uint256 beans)
balanceOfEarnedStalk
viewfunction balanceOfEarnedStalk(address account) view returns (uint256)
balanceOfFinishedGerminatingStalkAndRoots
viewfunction balanceOfFinishedGerminatingStalkAndRoots(address account) view returns (uint256 gStalk, uint256 gRoots)
balanceOfGerminatingStalk
viewfunction balanceOfGerminatingStalk(address account) view returns (uint256)
balanceOfGrownStalk
viewfunction balanceOfGrownStalk(address account, address token) view returns (uint256)
balanceOfGrownStalkMultiple
viewfunction balanceOfGrownStalkMultiple(address account, address[] tokens) view returns (uint256[] grownStalks)
balanceOfPlantableSeeds
viewfunction balanceOfPlantableSeeds(address account) view returns (uint256)
balanceOfPlenty
viewfunction balanceOfPlenty(address account, address well) view returns (uint256 plenty)
balanceOfRainRoots
viewfunction balanceOfRainRoots(address account) view returns (uint256)
balanceOfRoots
viewfunction balanceOfRoots(address account) view returns (uint256)
balanceOfSop
viewfunction balanceOfSop(address account) view returns (tuple sop)
balanceOfStalk
viewfunction balanceOfStalk(address account) view returns (uint256)
balanceOfYoungAndMatureGerminatingStalk
viewfunction balanceOfYoungAndMatureGerminatingStalk(address account) view returns (uint256 matureGerminatingStalk, uint256 youngGerminatingStalk)
bdv
viewfunction bdv(address token, uint256 amount) view returns (uint256 _bdv)
bdvs
viewfunction bdvs(address[] tokens, uint256[] amounts) view returns (uint256[] _bdvs)
calculateStemForTokenFromGrownStalk
viewfunction calculateStemForTokenFromGrownStalk(address token, uint256 grownStalk, uint256 bdvOfDeposit) view returns (int96 stem, uint8 germ)
getAddressAndStem
purefunction getAddressAndStem(uint256 depositId) pure returns (address token, int96 stem)
getBeanIndex
viewfunction getBeanIndex(address[] tokens) view returns (uint256)
getBeanToken
viewfunction getBeanToken() view returns (address)
getDeposit
viewfunction getDeposit(address account, address token, int96 stem) view returns (uint256, uint256)
getDepositId
purefunction getDepositId(address token, int96 stem) pure returns (uint256)
getDepositsForAccount
viewfunction getDepositsForAccount(address account, address[] tokens) view returns (tuple[] deposits)
getDepositsForAccount
viewfunction getDepositsForAccount(address account) view returns (tuple[] deposits)
getEvenGerminating
viewfunction getEvenGerminating(address token) view returns (uint256, uint256)
getGerminatingRootsForSeason
viewfunction getGerminatingRootsForSeason(uint32 season) view returns (uint256)
getGerminatingStalkAndRootsForSeason
viewfunction getGerminatingStalkAndRootsForSeason(uint32 season) view returns (uint256, uint256)
getGerminatingStalkForSeason
viewfunction getGerminatingStalkForSeason(uint32 season) view returns (uint256)
getGerminatingStem
viewfunction getGerminatingStem(address token) view returns (int96 germinatingStem)
getGerminatingStems
viewfunction getGerminatingStems(address[] tokens) view returns (int96[] germinatingStems)
getGerminatingTotalDeposited
viewfunction getGerminatingTotalDeposited(address token) view returns (uint256 amount)
getGerminatingTotalDepositedBdv
viewfunction getGerminatingTotalDepositedBdv(address token) view returns (uint256 _bdv)
getHighestNonGerminatingStem
viewfunction getHighestNonGerminatingStem(address token) view returns (int96 stem)
getHighestNonGerminatingStems
viewfunction getHighestNonGerminatingStems(address[] tokens) view returns (int96[] highestNonGerminatingStems)
getIndexForDepositId
viewfunction getIndexForDepositId(address account, address token, uint256 depositId) view returns (uint256)
getLastMowedStem
viewfunction getLastMowedStem(address account, address token) view returns (int96 lastStem)
getMowStatus
viewfunction getMowStatus(address account, address token) view returns (tuple mowStatus)
getMowStatus
viewfunction getMowStatus(address account, address[] tokens) view returns (tuple[] mowStatuses)
getNonBeanTokenAndIndexFromWell
viewfunction getNonBeanTokenAndIndexFromWell(address well) view returns (address, uint256)
getOddGerminating
viewfunction getOddGerminating(address token) view returns (uint256, uint256)
getStemTips
viewfunction getStemTips() view returns (int96[] _stemTips)
getTokenDepositIdsForAccount
viewfunction getTokenDepositIdsForAccount(address account, address token) view returns (uint256[] depositIds)
getTokenDepositsForAccount
viewfunction getTokenDepositsForAccount(address account, address token) view returns (tuple deposits)
getTotalDeposited
viewfunction getTotalDeposited(address token) view returns (uint256)
getTotalDepositedBdv
viewfunction getTotalDepositedBdv(address token) view returns (uint256)
getTotalGerminatingAmount
viewfunction getTotalGerminatingAmount(address token) view returns (uint256)
getTotalGerminatingBdv
viewfunction getTotalGerminatingBdv(address token) view returns (uint256)
getTotalGerminatingStalk
viewfunction getTotalGerminatingStalk() view returns (uint256)
getTotalSiloDeposited
viewfunction getTotalSiloDeposited() view returns (uint256[] depositedAmounts)
getTotalSiloDepositedBdv
viewfunction getTotalSiloDepositedBdv() view returns (uint256[] depositedBdvs)
getYoungAndMatureGerminatingTotalStalk
viewfunction getYoungAndMatureGerminatingTotalStalk() view returns (uint256 matureGerminatingStalk, uint256 youngGerminatingStalk)
grownStalkForDeposit
viewfunction grownStalkForDeposit(address account, address token, int96 stem) view returns (uint256 grownStalk)
lastSeasonOfPlenty
viewfunction lastSeasonOfPlenty() view returns (uint32)
lastUpdate
viewfunction lastUpdate(address account) view returns (uint32)
stalkEarnedPerSeason
viewfunction stalkEarnedPerSeason(address[] tokens) view returns (uint256[] stalkEarnedPerSeasons)
stemTipForToken
viewfunction stemTipForToken(address token) view returns (int96 _stemTip)
tokenSettings
viewfunction tokenSettings(address token) view returns (tuple)
totalEarnedBeans
viewfunction totalEarnedBeans() view returns (uint256)
totalRainRoots
viewfunction totalRainRoots() view returns (uint256)
totalRoots
viewfunction totalRoots() view returns (uint256)
totalStalk
viewfunction totalStalk() view returns (uint256)
events
No events.
errors
SafeCastOverflowedIntDowncast
error SafeCastOverflowedIntDowncast(uint8 bits, int256 value)
SafeCastOverflowedUintToInt
error SafeCastOverflowedUintToInt(uint256 value)
creation bytecode
0x6080604052348015600e575f80fd5b50613ef08061001c5f395ff3fe608060405234801561000f575f80fd5b506004361061033b575f3560e01c806396e7f21e116101b9578063bd637860116100f6578063e49b77f51161009a578063e49b77f514610937578063e5b17f2a14610957578063e73c165b1461096a578063e923e8d41461097d578063edd2d1671461099d578063f6225118146109b0578063fd9de166146109e2578063ff1b540f146109ea575f80fd5b8063bd63786014610811578063be6547d214610819578063c063989e1461083f578063c25a156c14610852578063cb03fb1e14610865578063cb65f1b114610896578063d31e4d66146108a9578063dc25a650146108bc575f80fd5b8063abed2d411161015d578063abed2d4114610758578063aea72f961461076b578063b02e716214610773578063b13d302414610786578063b45ef2eb1461078e578063b592d450146107a1578063ba39dc02146107b4578063bc8514cf146107c7575f80fd5b806396e7f21e146106a957806398f2b8ad146106d15780639b3ec513146106e45780639cf67d70146106f75780639d6a924e146106ff5780639dcf67f014610712578063a7bf680f14610725578063a953f06d14610745575f80fd5b80636144921211610287578063823ccbe91161022b578063823ccbe9146105ea578063838082b51461060a57806385167e511461061d5780638915ba24146106305780638c1e6f22146106435780638eeae3101461065657806391a38626146106695780639256dccd14610684575f80fd5b806361449212146104e457806369fbad94146104f75780636a9c931d146105225780637b52fadf146105425780637d4a51cb1461054a5780637fc06e1214610552578063805a343f146105a257806380c9084b146105d7575f80fd5b80633a1b0606116102ee5780633a1b0606146104075780633e465a2e1461041a5780634118140a1461042d578063465441661461045a5780634e1273f41461046257806354369b5b1461048257806355d0807e146104955780635a8e63e3146104dc575f80fd5b8062fdd58e1461033f578063047c92cf146103655780630b6413b0146103855780630c9c31bd146103a65780630fb01e05146103b95780631ca5f625146103e1578063341b94d5146103f4575b5f80fd5b61035261034d366004613362565b6109fd565b6040519081526020015b60405180910390f35b6103786103733660046133d3565b610a31565b60405161035c9190613423565b610398610393366004613485565b610af4565b60405161035c9291906134cb565b6103526103b43660046134ff565b610b0d565b6103cc6103c73660046134ff565b610b30565b6040805192835260208301919091520161035c565b6103cc6103ef3660046134ff565b610bc8565b6103526104023660046134ff565b610c55565b61035261041536600461352b565b610c6e565b6103526104283660046134ff565b610c84565b6103cc61043b36600461356f565b63ffffffff165f90815260cb6020526040902080546001909101549091565b60c554610352565b610475610470366004613592565b610d23565b60405161035c9190613632565b610475610490366004613644565b610e8f565b6103526104a336600461367b565b6001600160a01b038084165f90815260208181526040808320938616835260149093018152828220848352600101905220549392505050565b6103cc610f07565b6103cc6104f236600461352b565b610f5b565b6103526105053660046134ff565b6001600160a01b03165f908152602081905260409020602c015490565b61053561053036600461371f565b610f75565b60405161035c91906137ad565b60c454610352565b61035261101c565b61058f610560366004613644565b6001600160a01b039182165f9081526020818152604080832093909416825260189092019091522054600b0b90565b604051600b9190910b815260200161035c565b6105b56105b03660046137f3565b611077565b604080516001600160a01b039093168352600b9190910b60208301520161035c565b6103526105e53660046134ff565b611089565b6105fd6105f83660046134ff565b6110c4565b60405161035c9190613892565b6103526106183660046134ff565b611180565b6103cc61062b3660046134ff565b6111ac565b61035261063e366004613644565b6111e4565b610352610651366004613362565b611259565b6103526106643660046134ff565b611264565b6001546040516001600160a01b03909116815260200161035c565b61035261069236600461356f565b63ffffffff165f90815260cb602052604090205490565b6103526106b736600461356f565b63ffffffff165f90815260cb602052604090206001015490565b6103526106df3660046138f4565b6112d3565b6103526106f23660046134ff565b6112de565b6105356112ef565b61035261070d3660046134ff565b6113a0565b6103526107203660046134ff565b6113ca565b6107386107333660046134ff565b611436565b60405161035c9190613927565b61058f6107533660046134ff565b611615565b61058f6107663660046134ff565b611628565b60ed54610352565b610352610781366004613644565b611632565b61047561163d565b61035261079c3660046134ff565b6116e1565b6103526107af3660046139ec565b611732565b6103526107c23660046134ff565b61176e565b6103526107d5366004613644565b6001600160a01b039182165f9081526020818152604080832093909416825260189092019091522054600160601b90046001600160801b031690565b6104756117c9565b60d454600160201b900463ffffffff165b60405163ffffffff909116815260200161035c565b6103cc61084d3660046134ff565b61186d565b6103526108603660046134ff565b6118ac565b61082a6108733660046134ff565b6001600160a01b03165f9081526020819052604090206002015463ffffffff1690565b6104756108a43660046133d3565b6118b6565b6104756108b7366004613592565b611956565b61092a6108ca366004613644565b6040805180820182525f80825260209182018190526001600160a01b0394851681528082528281209390941684526018909201825291829020825180840190935254600b81900b8352600160601b90046001600160801b03169082015290565b60405161035c9190613a1e565b61094a610945366004613644565b611a1c565b60405161035c9190613a41565b61053561096536600461371f565b611c29565b6105fd6109783660046133d3565b611ccd565b61099061098b3660046134ff565b611d7d565b60405161035c9190613ac0565b6104756109ab3660046139ec565b612040565b6109c36109be3660046134ff565b612107565b604080516001600160a01b03909316835260208301919091520161035c565b60c654610352565b61058f6109f83660046134ff565b612112565b6001600160a01b0382165f908152602081815260408083208484526013019091529020546001600160801b03165b92915050565b6060816001600160401b03811115610a4b57610a4b6136b9565b604051908082528060200260200182016040528015610a8f57816020015b604080518082019091525f8082526020820152815260200190600190039081610a695790505b5090505f5b82811015610aec57610ac785858584818110610ab257610ab2613bcf565b90506020020160208101906108ca91906134ff565b828281518110610ad957610ad9613bcf565b6020908102919091010152600101610a94565b509392505050565b5f80610b0185858561211c565b90969095509350505050565b6001600160a01b03165f90815260c760205260409020546001600160801b031690565b60d4545f908190610b499060019063ffffffff16613bf7565b6001600160a01b0384165f9081526020819052604090206002015463ffffffff91821691161015610b7e57505f928392509050565b6001600160a01b0383165f90815260208190526040902060020154610bb3908490610bae9063ffffffff1661216c565b61219b565b6001600160801b039081169350169050915091565b6001600160a01b0381165f9081525f80516020613e9b833981519152602052604081205481906001600160801b031660ca8260015b6002811115610c0e57610c0e6134b7565b815260208082019290925260409081015f9081206001600160a01b03909716815295909152909320546001600160801b0393841694600160801b9091049390931692915050565b5f610a2b6402540be400610c6884610c84565b9061222a565b5f610c7a848484612235565b90505b9392505050565b6001600160a01b0381165f9081526020819052604081206002015460d45482918291610cbb91869163ffffffff91821691166122da565b6001600160a01b0386165f9081526020819052604081206001015492945090925090610ce790846123c3565b6001600160a01b0386165f9081526020819052604081205491925090610d0d90846123c3565b9050610d1982826123ce565b9695505050505050565b6060838214610d8a5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e677468206044820152670dad2e6dac2e8c6d60c31b60648201526084015b60405180910390fd5b5f846001600160401b03811115610da357610da36136b9565b604051908082528060200260200182016040528015610dcc578160200160208202803683370190505b5090505f5b85811015610e83575f80888884818110610ded57610ded613bcf565b9050602002016020810190610e0291906134ff565b6001600160a01b03166001600160a01b031681526020019081526020015f206013015f868684818110610e3757610e37613bcf565b602090810292909201358352508101919091526040015f205482516001600160801b0390911690839083908110610e7057610e70613bcf565b6020908102919091010152600101610dd1565b5090505b949350505050565b6001600160a01b038083165f9081526020818152604080832093851683526014909301815290829020805483518184028101840190945280845260609392830182828015610efa57602002820191905f5260205f20905b815481526020019060010190808311610ee6575b5050505050905092915050565b60d4545f90819060cb908290610f259060019063ffffffff16613bf7565b63ffffffff908116825260208083019390935260409182015f9081205460d454909216815260cb90935291205490939092509050565b5f80610f68858585612445565b915091505b935093915050565b606081516001600160401b03811115610f9057610f906136b9565b604051908082528060200260200182016040528015610fb9578160200160208202803683370190505b5090505f5b825181101561101657610fe9838281518110610fdc57610fdc613bcf565b602002602001015161249b565b828281518110610ffb57610ffb613bcf565b600b9290920b60209283029190910190910152600101610fbe565b50919050565b60d4545f906110729060cb90839061103c9060019063ffffffff16613bf7565b63ffffffff908116825260208083019390935260409182015f9081205460d4548316825260cb909452919091205491906123c316565b905090565b5f80606083901c835b91509150915091565b6001546001600160a01b03165f90815260c86020526040812054600160201b900464ffffffffff166110ba83610c84565b610a2b9190613c14565b60605f6110cf6124b2565b905080516001600160401b038111156110ea576110ea6136b9565b60405190808252806020026020018201604052801561112357816020015b611110613226565b8152602001906001900390816111085790505b5091505f5b8151811015611179576111548483838151811061114757611147613bcf565b6020026020010151611a1c565b83828151811061116657611166613bcf565b6020908102919091010152600101611128565b5050919050565b6001600160a01b0381165f90815260208190526040812060020154610a2b90839063ffffffff166125b3565b6001600160a01b0381165f9081525f80516020613e7b833981519152602052604081205481906001600160801b031660ca8280610bfd565b6001600160a01b038083165f9081526020818152604080832093851683526018909301905290812054610c7d90600b0b61121d84612626565b6001600160a01b038681165f908152602081815260408083209389168352601890930190522054600160601b90046001600160801b03166126e3565b5f610c7d83836126ef565b6001600160a01b0381165f9081526020819052604081206002015460d454829161129991859163ffffffff90811691166122da565b509050610c7d6112a884610c55565b6001600160a01b0385165f908152602081905260409020600101546112cd90846123c3565b906123c3565b5f610c7d838361280f565b5f6112e882612831565b5092915050565b60605f6112fa6124b2565b905080516001600160401b03811115611315576113156136b9565b60405190808252806020026020018201604052801561133e578160200160208202803683370190505b5091505f5b815181101561139b5761136e82828151811061136157611361613bcf565b6020026020010151612626565b83828151811061138057611380613bcf565b600b9290920b60209283029190910190910152600101611343565b505090565b6001600160a01b03165f90815260c76020526040902054600160801b90046001600160801b031690565b6001600160a01b0381165f9081525f80516020613e9b83398151915260209081526040808320545f80516020613e7b833981519152909252822054611427916001600160801b03600160801b918290048116929190910416613c2b565b6001600160801b031692915050565b604080516080810182525f80825260208083018281528385018381526060808601526001600160a01b038716808552848452958420600281015463ffffffff600160401b820481168852600160201b9091041690925294835290829052602c0154909252906114a36128f9565b905080516001600160401b038111156114be576114be6136b9565b6040519080825280602002602001820160405280156114f757816020015b6114e461324f565b8152602001906001900390816114dc5790505b5060608301525f5b8151811015611179576001600160a01b0384165f9081526020819052604081208351602d90910190829085908590811061153b5761153b613bcf565b6020908102919091018101516001600160a01b031682528181019290925260409081015f208151606081018352815481526001820154938101939093528151608081018084529192840191600284019060049082845b8154815260200190600101908083116115915750505050508152505090505f60405180604001604052808585815181106115cd576115cd613bcf565b60200260200101516001600160a01b03168152602001838152509050808560600151848151811061160057611600613bcf565b602090810291909101015250506001016114ff565b5f80611620836129f0565b519392505050565b5f610a2b82612626565b5f610c7d8383612a2b565b60605f6116486124b2565b905080516001600160401b03811115611663576116636136b9565b60405190808252806020026020018201604052801561168c578160200160208202803683370190505b5091505f5b815181101561139b576116bc8282815181106116af576116af613bcf565b6020026020010151610b0d565b8382815181106116ce576116ce613bcf565b6020908102919091010152600101611691565b6001600160a01b0381165f9081525f80516020613e9b83398151915260209081526040808320545f80516020613e7b833981519152909252822054611427916001600160801b039081169116613c2b565b5f610c7d8383808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250612caf92505050565b6001600160a01b0381165f9081526020819052604081206002015460d45482916117a391859163ffffffff90811691166122da565b6001600160a01b0385165f90815260208190526040902054909250610c7d9150826123c3565b60605f6117d46124b2565b905080516001600160401b038111156117ef576117ef6136b9565b604051908082528060200260200182016040528015611818578160200160208202803683370190505b5091505f5b815181101561139b5761184882828151811061183b5761183b613bcf565b60200260200101516113a0565b83828151811061185a5761185a613bcf565b602090810291909101015260010161181d565b6001600160a01b0381165f9081526020819052604081206002015460d45482916118a291859163ffffffff90811691166122da565b9094909350915050565b5f610c7d82612831565b6060816001600160401b038111156118d0576118d06136b9565b6040519080825280602002602001820160405280156118f9578160200160208202803683370190505b5090505f5b82811015610aec576119318585858481811061191c5761191c613bcf565b905060200201602081019061063e91906134ff565b82828151811061194357611943613bcf565b60209081029190910101526001016118fe565b6060836001600160401b03811115611970576119706136b9565b604051908082528060200260200182016040528015611999578160200160208202803683370190505b5090505f5b84811015611a13576119ee8686838181106119bb576119bb613bcf565b90506020020160208101906119d091906134ff565b8585848181106119e2576119e2613bcf565b90506020020135611259565b828281518110611a0057611a00613bcf565b602090810291909101015260010161199e565b50949350505050565b611a24613226565b6001600160a01b038084165f9081526020818152604080832093861683526014909301815282822080548451818402810184019095528085529293929091830182828015611a8f57602002820191905f5260205f20905b815481526020019060010190808311611a7b575b5050505050905080515f03611b0457604080516060810182526001600160a01b0385168152602080820184905282515f8082529181018452919283019190611af8565b604080518082019091525f8082526020820152815260200190600190039081611ad25790505b50815250915050610a2b565b6001600160a01b03831682526020820181905280516001600160401b03811115611b3057611b306136b9565b604051908082528060200260200182016040528015611b7457816020015b604080518082019091525f8082526020820152815260200190600190039081611b4e5790505b5060408301525f5b8151811015611c21576001600160a01b0385165f908152602081905260408120835160139091019190849084908110611bb757611bb7613bcf565b60209081029190910181015182528181019290925260409081015f208151808301835290546001600160801b038082168352600160801b9091041692810192909252840151805183908110611c0e57611c0e613bcf565b6020908102919091010152600101611b7c565b505092915050565b606081516001600160401b03811115611c4457611c446136b9565b604051908082528060200260200182016040528015611c6d578160200160208202803683370190505b5090505f5b825181101561101657611c9d838281518110611c9057611c90613bcf565b60200260200101516129f0565b5f0151828281518110611cb257611cb2613bcf565b600b9290920b60209283029190910190910152600101611c72565b6060816001600160401b03811115611ce757611ce76136b9565b604051908082528060200260200182016040528015611d2057816020015b611d0d613226565b815260200190600190039081611d055790505b5090505f5b82811015610aec57611d5885858584818110611d4357611d43613bcf565b905060200201602081019061094591906134ff565b828281518110611d6a57611d6a613bcf565b6020908102919091010152600101611d25565b611d85613276565b6001600160a01b038083165f90815260c8602090815260409182902082516101608101845281546001600160e01b031960e082811b8216845264ffffffffff600160201b8404168487015265ffffffffffff600160481b8404168488015263ffffffff600160781b840416606080860191909152600160981b8404600b0b6080808701919091526001600160f81b0319600160f81b90950460f890811b861660a08801526001880154600481900b60c08901526001600160801b0365010000000000820416858901526001600160401b03600160a81b9091041661010088015289519182018a526002880180549b8c168352600160a01b8c0490941b90941697810197909752600160c01b90980490911b90911694840194909452600382018054919592946101208701949390929084019190611ec190613c4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611eed90613c4b565b8015611f385780601f10611f0f57610100808354040283529160200191611f38565b820191905f5260205f20905b815481529060010190602001808311611f1b57829003601f168201915b505050919092525050508152604080516080810182526004840180546001600160a01b0381168352600160a01b810460e01b6001600160e01b031916602080850191909152600160c01b90910460f81b6001600160f81b031916938301939093526005850180549390940193919290916060840191611fb690613c4b565b80601f0160208091040260200160405190810160405280929190818152602001828054611fe290613c4b565b801561202d5780601f106120045761010080835404028352916020019161202d565b820191905f5260205f20905b81548152906001019060200180831161201057829003601f168201915b5050509190925250505090525092915050565b6060816001600160401b0381111561205a5761205a6136b9565b604051908082528060200260200182016040528015612083578160200160208202803683370190505b5090505f5b828110156112e8576120e28484838181106120a5576120a5613bcf565b90506020020160208101906120ba91906134ff565b6001600160a01b03165f90815260c86020526040902054600160201b900464ffffffffff1690565b8282815181106120f4576120f4613bcf565b6020908102919091010152600101612088565b5f8061108083612d3c565b5f610a2b8261249b565b5f805f612128866129f0565b905061215561214761214261213d8888612e5b565b612e66565b612e96565b6020830151600b0b90612eca565b92506121618382612ed5565b915050935093915050565b5f61218263ffffffff80841690600290612f3616565b63ffffffff1615612194576001610a2b565b5f92915050565b5f808083156121e5576001600160a01b0385165f90815260208281526040808320838052601a0190915280822054600183529120546001600160801b039182169450169150612222565b6001600160a01b0385165f9081526020828152604080832060018452601a01909152808220548280529120546001600160801b0391821694501691505b509250929050565b5f610c7d8284613c14565b5f8061224084612626565b905080600b0b83600b0b13156122905760405162461bcd60e51b815260206004820152601560248201527414da5b1bce88125b9d985b1a590811195c1bdcda5d605a1b6044820152606401610d81565b5f61229f600b83900b85612eca565b600b0b9050805f036122b5575f92505050610c7d565b5f6122c1878787612445565b91506122cf9050828261222a565b979650505050505050565b5f808263ffffffff168463ffffffff16036122f957505f905080610f6d565b5f8061230887610bae8861216c565b915091505f826001600160801b0316118015612343575061233463ffffffff80871690600190612f4116565b63ffffffff168663ffffffff16105b15612361576001600160801b038216935061235e8685612f4c565b92505b6001600160801b038116156123b957612383846001600160801b0383166123c3565b93506123b66123af6123a063ffffffff808a1690600190612f4116565b836001600160801b0316612f4c565b84906123c3565b92505b5050935093915050565b5f610c7d8284613c7d565b60c5545f90819081036123e4575f915050610a2b565b60c581015460c48201545f91612404916123fe908761222a565b90612e5b565b9050848111612417575f92505050610a2b565b61242a6402540be4006123fe8784613c90565b60c6830154909350831115611c21575060c601549050610a2b565b5f80805f612453868661280f565b6001600160a01b03979097165f9081526020928352604080822098825260139098019092525094909420546001600160801b0380821696600160801b90920416945092505050565b5f60016124a7836129f0565b51610a2b9190613ca3565b60c9546060905f9081816001600160401b038111156124d3576124d36136b9565b6040519080825280602002602001820160405280156124fc578160200160208202803683370190505b5093505f5b828110156125a95760c9840180548290811061251f5761251f613bcf565b5f91825260209091200154600160a01b900460ff16156125a15760c9840180548290811061254f5761254f613bcf565b5f918252602090912001546001600160a01b0316858361256e81613cd0565b94508151811061258057612580613bcf565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612501565b5080845250505090565b60d4545f9081906125d09063ffffffff90811690600190612f4116565b63ffffffff168363ffffffff1610156125ec575f915050610a2b565b5f806125fb86610bae8761216c565b90925090506126136001600160801b03831682612fb9565b6001600160801b03169695505050505050565b6001600160a01b0381165f90815260c8602052604081205481906126b59061267b9061265e90600160781b900463ffffffff16612fc4565b60d48401546126729063ffffffff16612fc4565b600b0b90612eca565b6001600160a01b0385165f90815260c8840160205260409020546126ac90600160201b900464ffffffffff16612fc4565b600b0b90612fd1565b6001600160a01b0384165f90815260c883016020526040902054610c7d9190600160981b9004600b0b613ce8565b5f610c7a848484612fdc565b6001600160a01b0382165f90815260c86020526040812054819060e01b6001600160e01b0319166127625760405162461bcd60e51b815260206004820152601b60248201527f53696c6f3a20546f6b656e206e6f742077686974656c697374656400000000006044820152606401610d81565b6001600160a01b0384165f90815260c8820160205260408120548190309061279a908890600160f81b810460f81b9060e01b89613007565b6040516127a79190613d15565b5f60405180830381855afa9150503d805f81146127df576040519150601f19603f3d011682016040523d82523d5f602084013e6127e4565b606091505b5091509150816128025780515f036127fa575f80fd5b805181602001fd5b6020015195945050505050565b6001600160601b031660609190911b6bffffffffffffffffffffffff19161790565b6001600160a01b0381165f9081525f80516020613e9b83398151915260209081526040808320545f80516020613e7b83398151915290925282205482918291612892916001600160801b03600160801b918290048116929190910416613c2b565b60015f90815260ca8301602081815260408084206001600160a01b038a1680865290835281852054858052938352818520908552909152909120546128e3916001600160801b039081169116613c2b565b6001600160801b03918216969116945092505050565b60c9546060905f9081816001600160401b0381111561291a5761291a6136b9565b604051908082528060200260200182016040528015612943578160200160208202803683370190505b5093505f5b828110156125a95760c9840180548290811061296657612966613bcf565b5f91825260209091200154600160b81b900460ff16156129e85760c9840180548290811061299657612996613bcf565b5f918252602090912001546001600160a01b031685836129b581613cd0565b9450815181106129c7576129c7613bcf565b60200260200101906001600160a01b031690816001600160a01b0316815250505b600101612948565b604080518082019091525f8082526020820152612a0c82612626565b600b0b60208201819052612a219083906130e2565b600b0b8152919050565b6001600160a01b038281165f818152602081815260408083209486168352602d850182528220600101549282528190526002830154919290918290600160401b900463ffffffff1615612b9b57600282015463ffffffff600160401b82048116600160201b9092041603612ab957506001600160a01b0384165f908152602d82016020526040902054612af2565b506002810154600160201b900463ffffffff165f9081526101038301602090815260408083206001600160a01b03881684529091529020545b6001600160a01b038681165f9081526020858152604080832060020154600160401b900463ffffffff168352610103870182528083209389168352929052205481811115612b95575f612b458383613c90565b6001600160a01b0389165f908152602087905260409020602c01549293508392909150612b9190612b8a906c0c9f2c9cd04674edea40000000906123fe90859061222a565b87906123c3565b9550505b50612bdd565b506001600160a01b038581165f9081526020848152604080832060020154600160201b900463ffffffff16835261010386018252808320938816835292905220545b6001600160a01b0386165f9081526020849052604090206002015460d484015463ffffffff918216600160201b9091049091161115612ca65760d483015463ffffffff600160201b90910481165f9081526101038501602090815260408083206001600160a01b038a1684529091528120549091612c5e919084906130fc16565b6001600160a01b0388165f90815260208690526040902054909150612ca290612c9b906c0c9f2c9cd04674edea40000000906123fe90859061222a565b86906123c3565b9450505b50505092915050565b5f805b8251821015612d0057828281518110612ccd57612ccd613bcf565b602090810291909101015160018201546001600160a01b03918216911603612cf55750919050565b816001019150612cb2565b60405162461bcd60e51b81526020600482015260116024820152702132b0b7103737ba1034b7102bb2b6361760791b6044820152606401610d81565b5f80805f846001600160a01b0316639d63848a6040518163ffffffff1660e01b81526004015f60405180830381865afa158015612d7b573d5f803e3d5ffd5b505050506040513d5f823e601f3d908101601f19168201604052612da29190810190613d2b565b90505f5b8151811015612e1957600183015482516001600160a01b0390911690839083908110612dd457612dd4613bcf565b60200260200101516001600160a01b031614612e1157818181518110612dfc57612dfc613bcf565b60200260200101518194509450505050915091565b600101612da6565b5060405162461bcd60e51b81526020600482015260166024820152752634b12bb2b6361d1034b73b30b634b2103bb2b6361d60511b6044820152606401610d81565b5f610c7d8284613dc8565b5f6001600160ff1b03821115612e925760405163123baf0360e11b815260048101839052602401610d81565b5090565b80600b81900b8114612ec55760405163327269a760e01b81526060600482015260248101839052604401610d81565b919050565b5f610c7d8284613ca3565b5f815f0151600b0b83600b0b1215612eef57506002610a2b565b8160200151600b0b83600b0b03612f1c57612f08613107565b612f13576001612f15565b5f5b9050610a2b565b612f24613107565b612f2e575f612f15565b506001610a2b565b5f610c7d8284613ddb565b5f610c7d8284613bf7565b63ffffffff82165f90815260cb602052604081205481908303612f8a5763ffffffff84165f90815260cb8201602052604090206001015491506112e8565b63ffffffff8481165f90815260cb8301602052604090208054600190910154610e87926123fe91879161222a16565b5f610c7d8284613c2b565b5f610a2b61214283612e66565b5f610c7d8284613dfd565b5f610c7a6001600160801b038316612ff8600b86900b87612eca565b6001600160601b03169061222a565b60606001600160f81b031984165f0361306757828260405160240161302e91815260200190565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091529050610e87565b6001600160f81b03198416600160f81b0361309f576040516001600160a01b038616602482015260448101839052839060640161302e565b60405162461bcd60e51b815260206004820152601860248201527753696c6f3a20496e76616c696420656e636f64655479706560401b6044820152606401610d81565b5f610c7d826130f085613123565b64ffffffffff16612eca565b5f610c7d8284613c90565b60d4545f90819061311d9063ffffffff1661216c565b91505090565b60d4546001600160a01b0382165f90815260c860205260408120549091829163ffffffff918216600160781b909104909116101561318a576001600160a01b0383165f90815260c882016020526040902054600160201b900464ffffffffff169150611016565b6001600160a01b0383165f90815260c88201602052604081206001015460040b9081126131eb576001600160a01b0384165f90815260c8830160205260409020546131e4908290600160201b900464ffffffffff16613e1c565b9250611179565b6131f481613e3a565b6001600160a01b0385165f90815260c884016020526040902054610e879190600160201b900464ffffffffff16613e5c565b60405180606001604052805f6001600160a01b0316815260200160608152602001606081525090565b60405180604001604052805f6001600160a01b03168152602001613271613313565b905290565b60408051610160810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e0810182905261010081019190915261012081016132eb604080516080810182525f808252602082018190529181019190915260608082015290565b8152604080516080810182525f80825260208281018290529282015260608082015291015290565b60405180606001604052805f81526020015f815260200161327160405180608001604052806004906020820280368337509192915050565b6001600160a01b038116811461335f575f80fd5b50565b5f8060408385031215613373575f80fd5b823561337e8161334b565b946020939093013593505050565b5f8083601f84011261339c575f80fd5b5081356001600160401b038111156133b2575f80fd5b6020830191508360208260051b85010111156133cc575f80fd5b9250929050565b5f805f604084860312156133e5575f80fd5b83356133f08161334b565b925060208401356001600160401b0381111561340a575f80fd5b6134168682870161338c565b9497909650939450505050565b602080825282518282018190525f919060409081850190868401855b82811015613478576134688483518051600b0b82526020908101516001600160801b0316910152565b928401929085019060010161343f565b5091979650505050505050565b5f805f60608486031215613497575f80fd5b83356134a28161334b565b95602085013595506040909401359392505050565b634e487b7160e01b5f52602160045260245ffd5b600b83900b815260408101600383106134f257634e487b7160e01b5f52602160045260245ffd5b8260208301529392505050565b5f6020828403121561350f575f80fd5b8135610c7d8161334b565b8035600b81900b8114612ec5575f80fd5b5f805f6060848603121561353d575f80fd5b83356135488161334b565b925060208401356135588161334b565b91506135666040850161351a565b90509250925092565b5f6020828403121561357f575f80fd5b813563ffffffff81168114610c7d575f80fd5b5f805f80604085870312156135a5575f80fd5b84356001600160401b03808211156135bb575f80fd5b6135c78883890161338c565b909650945060208701359150808211156135df575f80fd5b506135ec8782880161338c565b95989497509550505050565b5f815180845260208085019450602084015f5b838110156136275781518752958201959082019060010161360b565b509495945050505050565b602081525f610c7d60208301846135f8565b5f8060408385031215613655575f80fd5b82356136608161334b565b915060208301356136708161334b565b809150509250929050565b5f805f6060848603121561368d575f80fd5b83356136988161334b565b925060208401356136a88161334b565b929592945050506040919091013590565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f191681016001600160401b03811182821017156136f5576136f56136b9565b604052919050565b5f6001600160401b03821115613715576137156136b9565b5060051b60200190565b5f6020808385031215613730575f80fd5b82356001600160401b03811115613745575f80fd5b8301601f81018513613755575f80fd5b8035613768613763826136fd565b6136cd565b81815260059190911b82018301908381019087831115613786575f80fd5b928401925b828410156122cf57833561379e8161334b565b8252928401929084019061378b565b602080825282518282018190525f9190848201906040850190845b818110156137e7578351600b0b835292840192918401916001016137c8565b50909695505050505050565b5f60208284031215613803575f80fd5b5035919050565b60018060a01b0381511682525f60208083015160608286015261383060608601826135f8565b604085810151878303888301528051808452908501935090915f91908501905b8083101561388657845180516001600160801b039081168452908701511686830152938501936001929092019190830190613850565b50979650505050505050565b5f60208083016020845280855180835260408601915060408160051b8701019250602087015f5b828110156138e757603f198886030184526138d585835161380a565b945092850192908501906001016138b9565b5092979650505050505050565b5f8060408385031215613905575f80fd5b82356139108161334b565b915061391e6020840161351a565b90509250929050565b6020808252825163ffffffff9081168383015283820151166040808401919091528084015160608085019190915280850151608080860152805160a086018190525f9493918401928592909160c08801905b808510156139df57855180516001600160a01b0316835287015180518884015280880151848401528301518483015f5b60048110156139c6578251825291890191908901906001016139a9565b50505060e0820191508686019550600185019450613979565b5098975050505050505050565b5f80602083850312156139fd575f80fd5b82356001600160401b03811115613a12575f80fd5b610b018582860161338c565b8151600b0b81526020808301516001600160801b03169082015260408101610a2b565b602081525f610c7d602083018461380a565b60018060a01b03815116825263ffffffff60e01b602082015116602083015260ff60f81b60408201511660408301525f6060820151608060608501528051806080860152806020830160a087015e5f60a0828701015260a0601f19601f8301168601019250505092915050565b60208152613adb6020820183516001600160e01b0319169052565b5f6020830151613af4604084018264ffffffffff169052565b50604083015165ffffffffffff8116606084015250606083015163ffffffff81166080840152506080830151613b2f60a0840182600b0b9052565b5060a08301516001600160f81b0319811660c08401525060c0830151613b5a60e084018260040b9052565b5060e0830151610100613b77818501836001600160801b03169052565b8401519050610120613b93848201836001600160401b03169052565b808501519150506101606101408181860152613bb3610180860184613a53565b90860151858203601f190183870152909250610d198382613a53565b634e487b7160e01b5f52603260045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b63ffffffff8281168282160390808211156112e8576112e8613be3565b8082028115828204841417610a2b57610a2b613be3565b6001600160801b038181168382160190808211156112e8576112e8613be3565b600181811c90821680613c5f57607f821691505b60208210810361101657634e487b7160e01b5f52602260045260245ffd5b80820180821115610a2b57610a2b613be3565b81810381811115610a2b57610a2b613be3565b600b82810b9082900b0360016001605f1b0319811260016001605f1b0382131715610a2b57610a2b613be3565b5f60018201613ce157613ce1613be3565b5060010190565b600b81810b9083900b0160016001605f1b03811360016001605f1b031982121715610a2b57610a2b613be3565b5f82518060208501845e5f920191825250919050565b5f6020808385031215613d3c575f80fd5b82516001600160401b03811115613d51575f80fd5b8301601f81018513613d61575f80fd5b8051613d6f613763826136fd565b81815260059190911b82018301908381019087831115613d8d575f80fd5b928401925b828410156122cf578351613da58161334b565b82529284019290840190613d92565b634e487b7160e01b5f52601260045260245ffd5b5f82613dd657613dd6613db4565b500490565b5f63ffffffff80841680613df157613df1613db4565b92169190910692915050565b5f82600b0b82600b0b0280600b0b91508082146112e8576112e8613be3565b64ffffffffff8281168282160390808211156112e8576112e8613be3565b5f8160040b647fffffffff198103613e5457613e54613be3565b5f0392915050565b64ffffffffff8181168382160190808211156112e8576112e8613be356fe992e0e3e7050db88ec37ec33505f46a9813ea5551fe17ef58dc201344bcbaf93ffdc4fad4cae5b6def485eb2915a8a59a963e8bdfb9e32cab695f7ae652f88b4a26469706673582212204f0639c0dbd5bb9ae3a36719fe72558543d5c3af71fec4a39b943166a001885764736f6c63430008190033