424 txs
425 calls
constructor
constructor(address nftContractAddress, address projectTokenAddress, address btcbTokenAddress, address dexPoolAddress, address initialOwner)
functions
btcbToken
viewfunction btcbToken() view returns (address)
dexPool
viewfunction dexPool() view returns (address)
electricityPricePerTHPerHour
viewfunction electricityPricePerTHPerHour() view returns (uint256)
getAllClaimHistory
viewfunction getAllClaimHistory(uint256 fromTime, uint256 toTime) view returns (tuple[])
getPendingRewards
viewfunction getPendingRewards(address stakerAddress) view returns (uint256 rewardAmount, uint256 electricityDebt)
getStakedNFTs
viewfunction getStakedNFTs(address _staker) view returns (uint256[])
nftContract
viewfunction nftContract() view returns (address)
nftOwners
viewfunction nftOwners(uint256) view returns (address)
owner
viewfunction owner() view returns (address)
PRICE_PRECISION
viewfunction PRICE_PRECISION() view returns (uint256)
PROJECT_TOKEN_DISCOUNT
viewfunction PROJECT_TOKEN_DISCOUNT() view returns (uint256)
projectToken
viewfunction projectToken() view returns (address)
rewardPerTHPerDay
viewfunction rewardPerTHPerDay() view returns (uint256)
stakedNFTs
viewfunction stakedNFTs(address, uint256) view returns (uint256)
stakerAddresses
viewfunction stakerAddresses(uint256) view returns (address)
stakers
viewfunction stakers(address) view returns (uint256 totalPower, uint256 lastRewardTimestamp, uint256 pendingRewards, uint256 electricityDebt)
totalPowerStaked
viewfunction totalPowerStaked() view returns (uint256)
TWAP_PERIOD
viewfunction TWAP_PERIOD() view returns (uint256)
claimRewards
nonpayablefunction claimRewards(bool payWithProjectToken)
distributeRewards
nonpayablefunction distributeRewards(uint256 rewardAmount)
renounceOwnership
nonpayablefunction renounceOwnership()
setElectricityPrice
nonpayablefunction setElectricityPrice(uint256 _pricePerTHPerHour)
setProjectToken
nonpayablefunction setProjectToken(address newProjectToken)
setRewardRate
nonpayablefunction setRewardRate(uint256 _rewardPerTHPerDay)
stake
nonpayablefunction stake(uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(uint256 tokenId)
events
NewElectricityPriceSet
event NewElectricityPriceSet(uint256 price)
NewRewardRateSet
event NewRewardRateSet(uint256 rewardRate)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
ProjectTokenUpdated
event ProjectTokenUpdated(address indexed newProjectToken)
RewardsClaimed
event RewardsClaimed(address indexed staker, uint256 rewardAmount, uint256 electricityDebt, bool paidWithProjectToken)
RewardsDistributed
event RewardsDistributed(uint256 totalRewardAmount)
Staked
event Staked(address indexed staker, uint256 tokenId, uint256 power)
Unstaked
event Unstaked(address indexed staker, uint256 tokenId, uint256 power)
errors
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
creation bytecode
0x60e06040523480156200001157600080fd5b5060405162003be038038062003be08339818101604052810190620000379190620002ee565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000ad5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a4919062000387565b60405180910390fd5b620000be81620001c060201b60201c565b508473ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505083600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508173ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050640306dc4200600881905550655af3107a40006009819055505050505050620003a4565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620002b68262000289565b9050919050565b620002c881620002a9565b8114620002d457600080fd5b50565b600081519050620002e881620002bd565b92915050565b600080600080600060a086880312156200030d576200030c62000284565b5b60006200031d88828901620002d7565b95505060206200033088828901620002d7565b94505060406200034388828901620002d7565b93505060606200035688828901620002d7565b92505060806200036988828901620002d7565b9150509295509295909350565b6200038181620002a9565b82525050565b60006020820190506200039e600083018462000376565b92915050565b60805160a05160c0516137c66200041a6000396000818161063201526113880152600081816108ad015281816109c90152818161185f01526120b6015260008181610b9301528181610ee8015281816112f301528181611bed01528181611cdf01528181611fbf015261209201526137c66000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c80639168ae72116100f9578063d56d229d11610097578063efe9c9e211610071578063efe9c9e21461049d578063f2fde38b146104b9578063f6ed2017146104d5578063f706004814610506576101a9565b8063d56d229d14610443578063de9a7e1914610461578063e0a9b7201461047f576101a9565b8063a694fc3a116100d3578063a694fc3a146103bb578063bbd94c2f146103d7578063c83a06ff14610407578063c8e5278314610425576101a9565b80639168ae721461034e57806395082d25146103815780639e447fc61461039f576101a9565b806359695976116101665780636f70d212116101405780636f70d212146102d8578063715018a6146103085780637ca25184146103125780638da5cb5b14610330576101a9565b8063596959761461026e57806359974e381461029e57806362614e50146102ba576101a9565b80630e6878a3146101ae5780632e17de78146101ca5780633d2fa2d2146101e6578063459598a2146102045780634b60ce771461023457806357a6225214610252575b600080fd5b6101c860048036038101906101c39190612704565b610536565b005b6101e460048036038101906101df9190612767565b610e43565b005b6101ee611386565b6040516101fb9190612813565b60405180910390f35b61021e60048036038101906102199190612767565b6113aa565b60405161022b919061284f565b60405180910390f35b61023c6113e9565b604051610249919061288b565b60405180910390f35b61026c60048036038101906102679190612767565b61140f565b005b610288600480360381019061028391906128a6565b611458565b6040516102959190612b65565b60405180910390f35b6102b860048036038101906102b39190612767565b611812565b005b6102c2611a6e565b6040516102cf9190612b96565b60405180910390f35b6102f260048036038101906102ed9190612bdd565b611a74565b6040516102ff9190612c79565b60405180910390f35b610310611b0b565b005b61031a611b1f565b6040516103279190612b96565b60405180910390f35b610338611b26565b604051610345919061284f565b60405180910390f35b61036860048036038101906103639190612bdd565b611b4f565b6040516103789493929190612c9b565b60405180910390f35b610389611b7f565b6040516103969190612b96565b60405180910390f35b6103b960048036038101906103b49190612767565b611b8b565b005b6103d560048036038101906103d09190612767565b611bd4565b005b6103f160048036038101906103ec9190612767565b612051565b6040516103fe919061284f565b60405180910390f35b61040f612084565b60405161041c9190612b96565b60405180910390f35b61042d61208a565b60405161043a9190612b96565b60405180910390f35b61044b612090565b6040516104589190612d01565b60405180910390f35b6104696120b4565b604051610476919061288b565b60405180910390f35b6104876120d8565b6040516104949190612b96565b60405180910390f35b6104b760048036038101906104b29190612bdd565b6120de565b005b6104d360048036038101906104ce9190612bdd565b6121dc565b005b6104ef60048036038101906104ea9190612bdd565b612262565b6040516104fd929190612d1c565b60405180910390f35b610520600480360381019061051b9190612d45565b61235a565b60405161052d9190612b96565b60405180910390f35b61053f3361238b565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160020154905060008260030154905060008060008411806105a65750600083115b6105e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dc90612de2565b60405180910390fd5b66027ca57357c000841161062e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062590612e4e565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f30d3d1b620151806040518263ffffffff1660e01b815260040161068c9190612b96565b602060405180830381865afa1580156106a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106cd9190612e83565b905060008111610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990612efc565b60405180910390fd5b861561088c5760006103e86103848661072b9190612f4b565b6107359190612fbc565b905081670de0b6b3a76400008261074c9190612f4b565b6107569190612fbc565b92506000831161079b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079290613039565b60405180910390fd5b809350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd336107e5611b26565b866040518463ffffffff1660e01b815260040161080493929190613059565b6020604051808303816000875af1158015610823573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061084791906130a5565b610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613144565b60405180910390fd5b506109aa565b8484111561099757600085856108a29190613164565b9050849350600095507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd336108f0611b26565b846040518463ffffffff1660e01b815260040161090f93929190613059565b6020604051808303816000875af115801561092e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061095291906130a5565b610991576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109889061320a565b60405180910390fd5b506109a9565b83925083856109a69190613164565b94505b5b60008660020181905550600086600301819055506000851115610aa5577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33876040518363ffffffff1660e01b8152600401610a2292919061322a565b6020604051808303816000875af1158015610a41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a6591906130a5565b610aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9b9061329f565b60405180910390fd5b5b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610b3057602002820191906000526020600020905b815481526020019060010190808311610b1c575b505050505090506000815167ffffffffffffffff811115610b5457610b536132bf565b5b604051908082528060200260200182016040528015610b825781602001602082028036833780820191505090505b50905060005b8251811015610c77577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309a32e1c848381518110610be057610bdf6132ee565b5b60200260200101516040518263ffffffff1660e01b8152600401610c049190612b96565b602060405180830381865afa158015610c21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c459190612e83565b828281518110610c5857610c576132ee565b5b6020026020010181815250508080610c6f9061331d565b915050610b88565b5060066040518061014001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020014281526020018981526020018881526020018781526020018681526020018a6000015481526020018481526020018381526020018b151581525090806001815401808255809150506001900390600052602060002090600a020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007019080519060200190610da49291906125f2565b50610100820151816008019080519060200190610dc29291906125f2565b506101208201518160090160006101000a81548160ff02191690831515021790555050503373ffffffffffffffffffffffffffffffffffffffff167fbd495203fc7db8566cbc6106126be5d4cbce9f7aba0102877256794d7f4b4c4288888c604051610e3093929190613374565b60405180910390a2505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff166003600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ee4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edb9061341d565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309a32e1c836040518263ffffffff1660e01b8152600401610f3f9190612b96565b602060405180830381865afa158015610f5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f809190612e83565b9050610f8b3361238b565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905081816000016000828254610fe29190613164565b925050819055508160076000828254610ffb9190613164565b925050819055506000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060005b81805490508110156111065784828281548110611068576110676132ee565b5b9060005260206000200154036110f357816001838054905061108a9190613164565b8154811061109b5761109a6132ee565b5b90600052602060002001548282815481106110b9576110b86132ee565b5b9060005260206000200181905550818054806110d8576110d761343d565b5b60019003818190600052602060002001600090559055611106565b80806110fe9061331d565b915050611048565b5060008260000154036112a15760005b60058054905081101561129f573373ffffffffffffffffffffffffffffffffffffffff166005828154811061114e5761114d6132ee565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361128c57600560016005805490506111a89190613164565b815481106111b9576111b86132ee565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600582815481106111f8576111f76132ee565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060058054806112525761125161343d565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055905561129f565b80806112979061331d565b915050611116565b505b3373ffffffffffffffffffffffffffffffffffffffff167f7fc4727e062e336010f2c282598ef5f14facb3de68cf8195c2f23e1454b2b74e85856040516112e9929190612d1c565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663beabacc83033876040518463ffffffff1660e01b815260040161134e93929190613059565b600060405180830381600087803b15801561136857600080fd5b505af115801561137c573d6000803e3d6000fd5b5050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b600581815481106113ba57600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61141761249f565b806008819055507fa73391ca57ef5f2b1fbb0f7fde161d9effbee9312949fa88fc57da6687e9ab8f8160405161144d9190612b96565b60405180910390a150565b606081831061149c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611493906134b8565b60405180910390fd5b428211156114df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d690613524565b60405180910390fd5b6000805b600680549050811015611571578460068281548110611505576115046132ee565b5b90600052602060002090600a0201600101541015801561154a57508360068281548110611535576115346132ee565b5b90600052602060002090600a02016001015411155b1561155e57818061155a9061331d565b9250505b80806115699061331d565b9150506114e3565b5060008167ffffffffffffffff81111561158e5761158d6132bf565b5b6040519080825280602002602001820160405280156115c757816020015b6115b461263f565b8152602001906001900390816115ac5790505b5090506000805b6006805490508110156118055786600682815481106115f0576115ef6132ee565b5b90600052602060002090600a02016001015410158015611635575085600682815481106116205761161f6132ee565b5b90600052602060002090600a02016001015411155b156117f2576006818154811061164e5761164d6132ee565b5b90600052602060002090600a0201604051806101400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820180548060200260200160405190810160405280929190818152602001828054801561174957602002820191906000526020600020905b815481526020019060010190808311611735575b50505050508152602001600882018054806020026020016040519081016040528092919081815260200182805480156117a157602002820191906000526020600020905b81548152602001906001019080831161178d575b505050505081526020016009820160009054906101000a900460ff1615151515815250508383815181106117d8576117d76132ee565b5b602002602001018190525081806117ee9061331d565b9250505b80806117fd9061331d565b9150506115ce565b5081935050505092915050565b61181a61249f565b6000811161185d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611854906135b6565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166323b872dd3330846040518463ffffffff1660e01b81526004016118ba93929190613059565b6020604051808303816000875af11580156118d9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118fd91906130a5565b61193c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119339061329f565b60405180910390fd5b60006007548261194c9190612fbc565b905060005b600580549050811015611a3257600060058281548110611974576119736132ee565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506119ed8261238b565b60008482600001546119ff9190612f4b565b905080826002016000828254611a1591906135d6565b925050819055505050508080611a2a9061331d565b915050611951565b507f6d1c76d614228b523baa4dcd9539e2c713b54ff4ab3ff2d1627e7f6cd32be44282604051611a629190612b96565b60405180910390a15050565b61038481565b6060600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611aff57602002820191906000526020600020905b815481526020019060010190808311611aeb575b50505050509050919050565b611b1361249f565b611b1d6000612526565b565b6201518081565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090508060000154908060010154908060020154908060030154905084565b670de0b6b3a764000081565b611b9361249f565b806009819055507fdb3bb7ae0e8842522a177dc21bbba36c593edeb0926bbe8e123441e875c88d1c81604051611bc99190612b96565b60405180910390a150565b3373ffffffffffffffffffffffffffffffffffffffff167f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ea01ea22836040518263ffffffff1660e01b8152600401611c449190612b96565b602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c85919061361f565b73ffffffffffffffffffffffffffffffffffffffff1614611cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd290613698565b60405180910390fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166309a32e1c836040518263ffffffff1660e01b8152600401611d369190612b96565b602060405180830381865afa158015611d53573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d779190612e83565b905060008111611dbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611db390613704565b60405180910390fd5b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090506000816000015403611e78576005339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055504281600101819055505b611e813361238b565b81816000016000828254611e9591906135d6565b92505081905550600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020839080600181540180825580915050600190039060005260206000200160009091909190915055336003600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160076000828254611f6691906135d6565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f1449c6dd7851abc30abf37f57715f492010519147cc2652fbc38202c18a6ee908484604051611fb5929190612d1c565b60405180910390a27f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663beabacc83330866040518463ffffffff1660e01b815260040161201a93929190613059565b600060405180830381600087803b15801561203457600080fd5b505af1158015612048573d6000803e3d6000fd5b50505050505050565b60036020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60075481565b60085481565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b60095481565b6120e661249f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612155576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214c90613770565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f7d4472c87c10f649366c8f885beb86eaf0979d29afe4c6d21d9a1a0985a9dc0560405160405180910390a250565b6121e461249f565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036122565760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161224d919061284f565b60405180910390fd5b61225f81612526565b50565b6000806000600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154426122ba9190613164565b905081600201549350816003015492506000811180156122de575060008260000154115b1561235357620151808160095484600001546122fa9190612f4b565b6123049190612f4b565b61230e9190612fbc565b8461231991906135d6565b9350610e108160085484600001546123319190612f4b565b61233b9190612f4b565b6123459190612fbc565b8361235091906135d6565b92505b5050915091565b6004602052816000526040600020818154811061237657600080fd5b90600052602060002001600091509150505481565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905060008160010154426123e09190613164565b90506000811180156123f6575060008260000154115b1561249a576000620151808260095485600001546124149190612f4b565b61241e9190612f4b565b6124289190612fbc565b90506000610e108360085486600001546124429190612f4b565b61244c9190612f4b565b6124569190612fbc565b90508184600201600082825461246c91906135d6565b925050819055508084600301600082825461248791906135d6565b9250508190555042846001018190555050505b505050565b6124a76125ea565b73ffffffffffffffffffffffffffffffffffffffff166124c5611b26565b73ffffffffffffffffffffffffffffffffffffffff1614612524576124e86125ea565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161251b919061284f565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b82805482825590600052602060002090810192821561262e579160200282015b8281111561262d578251825591602001919060010190612612565b5b50905061263b91906126aa565b5090565b604051806101400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081526020016000151581525090565b5b808211156126c35760008160009055506001016126ab565b5090565b600080fd5b60008115159050919050565b6126e1816126cc565b81146126ec57600080fd5b50565b6000813590506126fe816126d8565b92915050565b60006020828403121561271a576127196126c7565b5b6000612728848285016126ef565b91505092915050565b6000819050919050565b61274481612731565b811461274f57600080fd5b50565b6000813590506127618161273b565b92915050565b60006020828403121561277d5761277c6126c7565b5b600061278b84828501612752565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60006127d96127d46127cf84612794565b6127b4565b612794565b9050919050565b60006127eb826127be565b9050919050565b60006127fd826127e0565b9050919050565b61280d816127f2565b82525050565b60006020820190506128286000830184612804565b92915050565b600061283982612794565b9050919050565b6128498161282e565b82525050565b60006020820190506128646000830184612840565b92915050565b6000612875826127e0565b9050919050565b6128858161286a565b82525050565b60006020820190506128a0600083018461287c565b92915050565b600080604083850312156128bd576128bc6126c7565b5b60006128cb85828601612752565b92505060206128dc85828601612752565b9150509250929050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61291b8161282e565b82525050565b61292a81612731565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b60006129688383612921565b60208301905092915050565b6000602082019050919050565b600061298c82612930565b612996818561293b565b93506129a18361294c565b8060005b838110156129d25781516129b9888261295c565b97506129c483612974565b9250506001810190506129a5565b5085935050505092915050565b6129e8816126cc565b82525050565b600061014083016000830151612a076000860182612912565b506020830151612a1a6020860182612921565b506040830151612a2d6040860182612921565b506060830151612a406060860182612921565b506080830151612a536080860182612921565b5060a0830151612a6660a0860182612921565b5060c0830151612a7960c0860182612921565b5060e083015184820360e0860152612a918282612981565b915050610100830151848203610100860152612aad8282612981565b915050610120830151612ac46101208601826129df565b508091505092915050565b6000612adb83836129ee565b905092915050565b6000602082019050919050565b6000612afb826128e6565b612b0581856128f1565b935083602082028501612b1785612902565b8060005b85811015612b535784840389528151612b348582612acf565b9450612b3f83612ae3565b925060208a01995050600181019050612b1b565b50829750879550505050505092915050565b60006020820190508181036000830152612b7f8184612af0565b905092915050565b612b9081612731565b82525050565b6000602082019050612bab6000830184612b87565b92915050565b612bba8161282e565b8114612bc557600080fd5b50565b600081359050612bd781612bb1565b92915050565b600060208284031215612bf357612bf26126c7565b5b6000612c0184828501612bc8565b91505092915050565b600082825260208201905092915050565b6000612c2682612930565b612c308185612c0a565b9350612c3b8361294c565b8060005b83811015612c6c578151612c53888261295c565b9750612c5e83612974565b925050600181019050612c3f565b5085935050505092915050565b60006020820190508181036000830152612c938184612c1b565b905092915050565b6000608082019050612cb06000830187612b87565b612cbd6020830186612b87565b612cca6040830185612b87565b612cd76060830184612b87565b95945050505050565b6000612ceb826127e0565b9050919050565b612cfb81612ce0565b82525050565b6000602082019050612d166000830184612cf2565b92915050565b6000604082019050612d316000830185612b87565b612d3e6020830184612b87565b9392505050565b60008060408385031215612d5c57612d5b6126c7565b5b6000612d6a85828601612bc8565b9250506020612d7b85828601612752565b9150509250929050565b600082825260208201905092915050565b7f4e6f2072657761726473206f7220646562747320746f20636c61696d00000000600082015250565b6000612dcc601c83612d85565b9150612dd782612d96565b602082019050919050565b60006020820190508181036000830152612dfb81612dbf565b9050919050565b7f436c61696d20616d6f756e7420697320746f6f20736d616c6c00000000000000600082015250565b6000612e38601983612d85565b9150612e4382612e02565b602082019050919050565b60006020820190508181036000830152612e6781612e2b565b9050919050565b600081519050612e7d8161273b565b92915050565b600060208284031215612e9957612e986126c7565b5b6000612ea784828501612e6e565b91505092915050565b7f496e76616c69642070726f6a65637420746f6b656e2070726963650000000000600082015250565b6000612ee6601b83612d85565b9150612ef182612eb0565b602082019050919050565b60006020820190508181036000830152612f1581612ed9565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f5682612731565b9150612f6183612731565b9250828202612f6f81612731565b91508282048414831517612f8657612f85612f1c565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612fc782612731565b9150612fd283612731565b925082612fe257612fe1612f8d565b5b828204905092915050565b7f50726f6a65637420746f6b656e20616d6f756e7420746f6f20736d616c6c0000600082015250565b6000613023601e83612d85565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b600060608201905061306e6000830186612840565b61307b6020830185612840565b6130886040830184612b87565b949350505050565b60008151905061309f816126d8565b92915050565b6000602082840312156130bb576130ba6126c7565b5b60006130c984828501613090565b91505092915050565b7f4661696c656420746f207472616e736665722070726f6a65637420746f6b656e60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061312e602183612d85565b9150613139826130d2565b604082019050919050565b6000602082019050818103600083015261315d81613121565b9050919050565b600061316f82612731565b915061317a83612731565b925082820390508181111561319257613191612f1c565b5b92915050565b7f4661696c656420746f207472616e736665722072656d61696e696e672042544360008201527f4220646562740000000000000000000000000000000000000000000000000000602082015250565b60006131f4602683612d85565b91506131ff82613198565b604082019050919050565b60006020820190508181036000830152613223816131e7565b9050919050565b600060408201905061323f6000830185612840565b61324c6020830184612b87565b9392505050565b7f4661696c656420746f207472616e736665722072657761726473000000000000600082015250565b6000613289601a83612d85565b915061329482613253565b602082019050919050565b600060208201905081810360008301526132b88161327c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061332882612731565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361335a57613359612f1c565b5b600182019050919050565b61336e816126cc565b82525050565b60006060820190506133896000830186612b87565b6133966020830185612b87565b6133a36040830184613365565b949350505050565b7f4e6f7420746865206f776e6572206f662074686973204e46542e20486176652060008201527f796f7520616c7265616479207374616b65642074686973204e46543f00000000602082015250565b6000613407603c83612d85565b9150613412826133ab565b604082019050919050565b60006020820190508181036000830152613436816133fa565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b7f496e76616c69642074696d652072616e67650000000000000000000000000000600082015250565b60006134a2601283612d85565b91506134ad8261346c565b602082019050919050565b600060208201905081810360008301526134d181613495565b9050919050565b7f456e642074696d652063616e6e6f7420626520696e2066757475726500000000600082015250565b600061350e601c83612d85565b9150613519826134d8565b602082019050919050565b6000602082019050818103600083015261353d81613501565b9050919050565b7f52657761726420616d6f756e74206d757374206265206772656174657220746860008201527f616e203000000000000000000000000000000000000000000000000000000000602082015250565b60006135a0602483612d85565b91506135ab82613544565b604082019050919050565b600060208201905081810360008301526135cf81613593565b9050919050565b60006135e182612731565b91506135ec83612731565b925082820190508082111561360457613603612f1c565b5b92915050565b60008151905061361981612bb1565b92915050565b600060208284031215613635576136346126c7565b5b60006136438482850161360a565b91505092915050565b7f4e6f7420746865206f776e6572206f662074686973204e46542e000000000000600082015250565b6000613682601a83612d85565b915061368d8261364c565b602082019050919050565b600060208201905081810360008301526136b181613675565b9050919050565b7f4e465420686173206e6f20706f77657200000000000000000000000000000000600082015250565b60006136ee601083612d85565b91506136f9826136b8565b602082019050919050565b6000602082019050818103600083015261371d816136e1565b9050919050565b7f496e76616c696420746f6b656e20616464726573730000000000000000000000600082015250565b600061375a601583612d85565b915061376582613724565b602082019050919050565b600060208201905081810360008301526137898161374d565b905091905056fea2646970667358221220bd64a13a7ce4ac0b33e53a24ff5f2d26615aaf462e5116a2f0f7cc00694cc53a64736f6c634300081400330000000000000000000000006f0432d01ddc77d2c86a6bd5405786d12aa6b4980000000000000000000000002c25eaca82e885a1afbc73aacd861318caaf97430000000000000000000000007130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c000000000000000000000000da9e3112fb434a6361b5da11b75fd02a9e5f4bf100000000000000000000000082503946e026e9f3c82a5a494e6f27fbfd3f7350