0 txs
136 calls
constructor
constructor()
functions
asset
viewfunction asset() view returns (address)
getActiveUnstakingInfoByIndex
viewfunction getActiveUnstakingInfoByIndex(uint256 index) view returns (tuple)
getActiveUnstakingInfosLength
viewfunction getActiveUnstakingInfosLength() view returns (uint256)
getCanceledUnstakingInfoByIndex
viewfunction getCanceledUnstakingInfoByIndex(uint256 index) view returns (tuple)
getCanceledUnstakingInfosLength
viewfunction getCanceledUnstakingInfosLength() view returns (uint256)
getClaimedUnstakingInfoByIndex
viewfunction getClaimedUnstakingInfoByIndex(uint256 index) view returns (tuple)
getClaimedUnstakingInfosLength
viewfunction getClaimedUnstakingInfosLength() view returns (uint256)
getUnstakingInfoByIndex
viewfunction getUnstakingInfoByIndex(uint256 index) view returns (tuple)
getUnstakingInfosLength
viewfunction getUnstakingInfosLength() view returns (uint256)
getUserActiveUnstakingInfoByIndex
viewfunction getUserActiveUnstakingInfoByIndex(address user, uint256 userIndex) view returns (tuple)
getUserActiveUnstakingInfosLength
viewfunction getUserActiveUnstakingInfosLength(address user) view returns (uint256)
getUserCanceledUnstakingInfoByIndex
viewfunction getUserCanceledUnstakingInfoByIndex(address user, uint256 userIndex) view returns (tuple)
getUserCanceledUnstakingInfosLength
viewfunction getUserCanceledUnstakingInfosLength(address user) view returns (uint256)
getUserClaimedUnstakingInfoByIndex
viewfunction getUserClaimedUnstakingInfoByIndex(address user, uint256 userIndex) view returns (tuple)
getUserClaimedUnstakingInfosLength
viewfunction getUserClaimedUnstakingInfosLength(address user) view returns (uint256)
owner
viewfunction owner() view returns (address)
stakingVault
viewfunction stakingVault() view returns (address)
totalUnstakingBalance
viewfunction totalUnstakingBalance() view returns (uint256)
unstakingDuration
viewfunction unstakingDuration() view returns (uint32)
cancelUnstaking
nonpayablefunction cancelUnstaking(uint256[] userIndices)
claim
nonpayablefunction claim(uint256[] userIndices)
initialize
nonpayablefunction initialize(address stakingVault_, uint32 unstakingDuration_)
renounceOwnership
nonpayablefunction renounceOwnership()
setUnstakingDuration
nonpayablefunction setUnstakingDuration(uint32 unstakingDuration_)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(address user, uint256 amount)
events
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
UnstakingCanceled
event UnstakingCanceled(address indexed user, uint256 indexed index, uint256 amount)
UnstakingClaimed
event UnstakingClaimed(address indexed user, uint256 indexed index, uint256 amount)
UnstakingDurationSet
event UnstakingDurationSet(uint256 unstakingDuration)
UnstakingStarted
event UnstakingStarted(address indexed user, uint256 indexed index, uint256 amount, uint256 startTs, uint256 endTs)
errors
InsufficientBalance
error InsufficientBalance()
InvalidInitialization
error InvalidInitialization()
InvalidUserIndex
error InvalidUserIndex()
NotActive
error NotActive()
NotInitializing
error NotInitializing()
NotStakingVault
error NotStakingVault()
NotYetClaimable
error NotYetClaimable()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x608060405234801561000f575f5ffd5b5061001e61002360201b60201c565b61019e565b5f61003261012160201b60201c565b9050805f0160089054906101000a900460ff161561007c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161461011e5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516101159190610185565b60405180910390a15b50565b5f5f61013161013a60201b60201c565b90508091505090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b5f67ffffffffffffffff82169050919050565b61017f81610163565b82525050565b5f6020820190506101985f830184610176565b92915050565b613be4806101ab5f395ff3fe608060405234801561000f575f5ffd5b506004361061018c575f3560e01c80638c726372116100dc578063b57164b011610095578063d7ad46471161006f578063d7ad4647146104a8578063f2fde38b146104c6578063f7f436d4146104e2578063fd46308d146105125761018c565b8063b57164b014610440578063c2a672e014610470578063c5e4c9f91461048c5761018c565b80638c726372146103565780638da5cb5b1461038657806392e5c20e146103a457806394e1fd06146103d45780639f7ac782146103f2578063b4da098b146104225761018c565b80633a5b2ac3116101495780636ba4c138116101235780636ba4c138146102e4578063715018a6146103005780637282f61e1461030a57806385a16019146103265761018c565b80633a5b2ac31461025457806350d8094f146102845780635aa9530a146102b45761018c565b806316e2f5961461019057806317e0e4af146101ae5780631f694628146101ca57806324e7964a146101fa5780632c5e11651461021857806338d52e0f14610236575b5f5ffd5b610198610530565b6040516101a5919061329f565b60405180910390f35b6101c860048036038101906101c39190613321565b610540565b005b6101e460048036038101906101df9190613396565b610c6a565b6040516101f19190613534565b60405180910390f35b610202610dec565b60405161020f91906135a8565b60405180910390f35b610220610e11565b60405161022d919061329f565b60405180910390f35b61023e610e21565b60405161024b91906135e1565b60405180910390f35b61026e60048036038101906102699190613624565b610e45565b60405161027b919061329f565b60405180910390f35b61029e60048036038101906102999190613396565b610e92565b6040516102ab9190613534565b60405180910390f35b6102ce60048036038101906102c99190613396565b611027565b6040516102db9190613534565b60405180910390f35b6102fe60048036038101906102f99190613321565b6111bc565b005b6103086118d8565b005b610324600480360381019061031f9190613679565b6118eb565b005b610340600480360381019061033b91906136a4565b6118ff565b60405161034d9190613534565b60405180910390f35b610370600480360381019061036b9190613624565b611ad0565b60405161037d919061329f565b60405180910390f35b61038e611b1d565b60405161039b91906136f1565b60405180910390f35b6103be60048036038101906103b991906136a4565b611b52565b6040516103cb9190613534565b60405180910390f35b6103dc611d23565b6040516103e9919061329f565b60405180910390f35b61040c600480360381019061040791906136a4565b611d33565b6040516104199190613534565b60405180910390f35b61042a611f04565b604051610437919061329f565b60405180910390f35b61045a60048036038101906104559190613624565b611f10565b604051610467919061329f565b60405180910390f35b61048a600480360381019061048591906136a4565b611f5d565b005b6104a660048036038101906104a1919061370a565b6123ee565b005b6104b0612778565b6040516104bd919061329f565b60405180910390f35b6104e060048036038101906104db9190613624565b61277e565b005b6104fc60048036038101906104f79190613396565b612802565b6040516105099190613534565b60405180910390f35b61051a612997565b6040516105279190613757565b60405180910390f35b5f61053b60066129ad565b905090565b5f5f90505f61058a600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129ad565b90505f8484905067ffffffffffffffff8111156105aa576105a9613770565b5b6040519080825280602002602001820160405280156105d85781602001602082028036833780820191505090505b5090505f5f90505b85859050811015610aaa575f8686838181106105ff576105fe61379d565b5b905060200201359050838110610641576040517f80c61bee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61069182600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129c090919063ffffffff16565b90505f600382815481106106a8576106a761379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff1660038111156107cb576107ca613448565b5b60038111156107dd576107dc613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506001600381111561081d5761081c613448565b5b8160800151600381111561083457610833613448565b5b1461086b576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60028160800190600381111561088457610883613448565b5b9081600381111561089857610897613448565b5b815250506108a5426129d7565b8160a0019063ffffffff16908163ffffffff168152505080600383815481106108d1576108d061379d565b5b905f5260205f2090600202015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548163ffffffff021916908363ffffffff1602179055506040820151815f0160186101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160010160106101000a81548160ff021916908360038111156109d6576109d5613448565b5b021790555060a08201518160010160116101000a81548163ffffffff021916908363ffffffff16021790555090505081858581518110610a1957610a1861379d565b5b60200260200101818152505080606001516fffffffffffffffffffffffffffffffff1687610a4791906137f7565b9650813373ffffffffffffffffffffffffffffffffffffffff167fb99536a3dc8a8c7e02cca68453133e69198a1d64dac86f9ca65add8350b060558360600151604051610a94919061385a565b60405180910390a35050508060010190506105e0565b505f5f90505b8151811015610bad575f828281518110610acd57610acc61379d565b5b60200260200101519050610b2681600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612a2e90919063ffffffff16565b50610b3b816004612a2e90919063ffffffff16565b50610b8b81600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612a4590919063ffffffff16565b50610ba0816006612a4590919063ffffffff16565b5050806001019050610ab0565b508260025f828254610bbf9190613873565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636e553f6584336040518363ffffffff1660e01b8152600401610c229291906138a6565b6020604051808303815f875af1158015610c3e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c6291906138e1565b505050505050565b610c7261320b565b60038281548110610c8657610c8561379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff166003811115610da957610da8613448565b5b6003811115610dbb57610dba613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610e1c60086129ad565b905090565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610e8b600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129ad565b9050919050565b610e9a61320b565b6003610eb08360066129c090919063ffffffff16565b81548110610ec157610ec061379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff166003811115610fe457610fe3613448565b5b6003811115610ff657610ff5613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b61102f61320b565b60036110458360086129c090919063ffffffff16565b815481106110565761105561379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff16600381111561117957611178613448565b5b600381111561118b5761118a613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b5f5f90505f611206600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129ad565b90505f8484905067ffffffffffffffff81111561122657611225613770565b5b6040519080825280602002602001820160405280156112545781602001602082028036833780820191505090505b5090505f5f90505b8585905081101561176a575f86868381811061127b5761127a61379d565b5b9050602002013590508381106112bd576040517f80c61bee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f61130d82600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129c090919063ffffffff16565b90505f600382815481106113245761132361379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff16600381111561144757611446613448565b5b600381111561145957611458613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506001600381111561149957611498613448565b5b816080015160038111156114b0576114af613448565b5b146114e7576040517f80cb55e200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806040015163ffffffff1642101561152b576040517fe111d41200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80606001516fffffffffffffffffffffffffffffffff168761154d91906137f7565b965060038160800190600381111561156857611567613448565b5b9081600381111561157c5761157b613448565b5b81525050611589426129d7565b8160a0019063ffffffff16908163ffffffff168152505080600383815481106115b5576115b461379d565b5b905f5260205f2090600202015f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548163ffffffff021916908363ffffffff1602179055506040820151815f0160186101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160010160106101000a81548160ff021916908360038111156116ba576116b9613448565b5b021790555060a08201518160010160116101000a81548163ffffffff021916908363ffffffff160217905550905050818585815181106116fd576116fc61379d565b5b602002602001018181525050813373ffffffffffffffffffffffffffffffffffffffff167f3f5d92fb898f2fb5d66dae79690f3d1bf875d32002aa8d76cc38aecb650f064c8360600151604051611754919061385a565b60405180910390a350505080600101905061125c565b505f5f90505b815181101561186d575f82828151811061178d5761178c61379d565b5b602002602001015190506117e681600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612a2e90919063ffffffff16565b506117fb816004612a2e90919063ffffffff16565b5061184b81600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612a4590919063ffffffff16565b50611860816008612a4590919063ffffffff16565b5050806001019050611770565b508260025f82825461187f9190613873565b925050819055506118d133845f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612a5c9092919063ffffffff16565b5050505050565b6118e0612adb565b6118e95f612b62565b565b6118f3612adb565b6118fc81612c33565b50565b61190761320b565b600361195883600b5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129c090919063ffffffff16565b815481106119695761196861379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff166003811115611a8c57611a8b613448565b5b6003811115611a9e57611a9d613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905092915050565b5f611b16600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129ad565b9050919050565b5f5f611b27612c8e565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b611b5a61320b565b6003611bab83600a5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129c090919063ffffffff16565b81548110611bbc57611bbb61379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff166003811115611cdf57611cde613448565b5b6003811115611cf157611cf0613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905092915050565b5f611d2e60046129ad565b905090565b611d3b61320b565b6003611d8c83600c5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129c090919063ffffffff16565b81548110611d9d57611d9c61379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff166003811115611ec057611ebf613448565b5b6003811115611ed257611ed1613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff1681525050905092915050565b5f600380549050905090565b5f611f56600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206129ad565b9050919050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611fe3576040517f19c400a400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f810361201c576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6002545f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161207991906136f1565b602060405180830381865afa158015612094573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120b891906138e1565b6120c29190613873565b9050808211156120fe576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600160149054906101000a900463ffffffff1663ffffffff164261212391906137f7565b90505f600380549050905061217d81600a5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20612a4590919063ffffffff16565b50612192816004612a4590919063ffffffff16565b5060036040518060c001604052808773ffffffffffffffffffffffffffffffffffffffff1681526020016121c5426129d7565b63ffffffff1681526020016121d9856129d7565b63ffffffff1681526020016121ed87612cb5565b6fffffffffffffffffffffffffffffffff1681526020016001600381111561221857612217613448565b5b8152602001612226426129d7565b63ffffffff16815250908060018154018082558091505060019003905f5260205f2090600202015f909190919091505f820151815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151815f0160146101000a81548163ffffffff021916908363ffffffff1602179055506040820151815f0160186101000a81548163ffffffff021916908363ffffffff1602179055506060820151816001015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060808201518160010160106101000a81548160ff0219169083600381111561234e5761234d613448565b5b021790555060a08201518160010160116101000a81548163ffffffff021916908363ffffffff16021790555050508360025f82825461238d91906137f7565b92505081905550808573ffffffffffffffffffffffffffffffffffffffff167f05526f80434e4a97a5f21388f52620c138379751e21e75eb871705020245f9f18642866040516123df9392919061390c565b60405180910390a35050505050565b5f6123f7612d18565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff1614801561243f5750825b90505f60018367ffffffffffffffff1614801561247257505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015612480575080155b156124b7576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315612504576001855f0160086101000a81548160ff0219169083151502179055505b5f8773ffffffffffffffffffffffffffffffffffffffff166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561254e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125729190613955565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036125d9576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8763ffffffff1603612618576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61262133612d2b565b8760015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506126a987612c33565b612714887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612d3f9092919063ffffffff16565b50831561276f575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2600160405161276691906139cc565b60405180910390a15b50505050505050565b60025481565b612786612adb565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127f6575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016127ed91906136f1565b60405180910390fd5b6127ff81612b62565b50565b61280a61320b565b60036128208360046129c090919063ffffffff16565b815481106128315761283061379d565b5b905f5260205f2090600202016040518060c00160405290815f82015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020015f820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020015f820160189054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1681526020016001820160109054906101000a900460ff16600381111561295457612953613448565b5b600381111561296657612965613448565b5b81526020016001820160119054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b600160149054906101000a900463ffffffff1681565b5f6129b9825f01612e4c565b9050919050565b5f6129cd835f0183612e5b565b5f1c905092915050565b5f63ffffffff8016821115612a26576020826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612a1d929190613a2a565b60405180910390fd5b819050919050565b5f612a3d835f01835f1b612e82565b905092915050565b5f612a54835f01835f1b612f7e565b905092915050565b612ad6838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401612a8f929190613a51565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fe5565b505050565b612ae3613080565b73ffffffffffffffffffffffffffffffffffffffff16612b01611b1d565b73ffffffffffffffffffffffffffffffffffffffff1614612b6057612b24613080565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612b5791906136f1565b60405180910390fd5b565b5f612b6b612c8e565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b80600160146101000a81548163ffffffff021916908363ffffffff1602179055507fe012342bcc2b50882af9dad03b9fa04114d81bcb86f84365b970962c5550586181604051612c839190613aa8565b60405180910390a150565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f6fffffffffffffffffffffffffffffffff8016821115612d10576080826040517f6dfcc650000000000000000000000000000000000000000000000000000000008152600401612d07929190613afa565b60405180910390fd5b819050919050565b5f5f612d22613087565b90508091505090565b612d336130b0565b612d3c816130f0565b50565b5f8373ffffffffffffffffffffffffffffffffffffffff1663095ea7b38484604051602401612d6f929190613a51565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050612dbd8482613174565b612e4657612e3b848573ffffffffffffffffffffffffffffffffffffffff1663095ea7b3865f604051602401612df4929190613b5a565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612fe5565b612e458482612fe5565b5b50505050565b5f815f01805490509050919050565b5f825f018281548110612e7157612e7061379d565b5b905f5260205f200154905092915050565b5f5f836001015f8481526020019081526020015f205490505f8114612f73575f600182612eaf9190613873565b90505f6001865f0180549050612ec59190613873565b9050808214612f2b575f865f018281548110612ee457612ee361379d565b5b905f5260205f200154905080875f018481548110612f0557612f0461379d565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f01805480612f3e57612f3d613b81565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f905560019350505050612f78565b5f9150505b92915050565b5f612f8983836131cd565b612fdb57825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050612fdf565b5f90505b92915050565b5f5f60205f8451602086015f885af180613004576040513d5f823e3d81fd5b3d92505f519150505f821461301d576001811415613038565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b1561307a57836040517f5274afe700000000000000000000000000000000000000000000000000000000815260040161307191906136f1565b60405180910390fd5b50505050565b5f33905090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b6130b86131ed565b6130ee576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6130f86130b0565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603613168575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161315f91906136f1565b60405180910390fd5b61317181612b62565b50565b5f5f5f5f60205f8651602088015f8a5af192503d91505f5190508280156131c257505f82146131a657600181146131c1565b5f8673ffffffffffffffffffffffffffffffffffffffff163b115b5b935050505092915050565b5f5f836001015f8481526020019081526020015f20541415905092915050565b5f6131f6612d18565b5f0160089054906101000a900460ff16905090565b6040518060c001604052805f73ffffffffffffffffffffffffffffffffffffffff1681526020015f63ffffffff1681526020015f63ffffffff1681526020015f6fffffffffffffffffffffffffffffffff1681526020015f600381111561327557613274613448565b5b81526020015f63ffffffff1681525090565b5f819050919050565b61329981613287565b82525050565b5f6020820190506132b25f830184613290565b92915050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f8401126132e1576132e06132c0565b5b8235905067ffffffffffffffff8111156132fe576132fd6132c4565b5b60208301915083602082028301111561331a576133196132c8565b5b9250929050565b5f5f60208385031215613337576133366132b8565b5b5f83013567ffffffffffffffff811115613354576133536132bc565b5b613360858286016132cc565b92509250509250929050565b61337581613287565b811461337f575f5ffd5b50565b5f813590506133908161336c565b92915050565b5f602082840312156133ab576133aa6132b8565b5b5f6133b884828501613382565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6133ea826133c1565b9050919050565b6133fa816133e0565b82525050565b5f63ffffffff82169050919050565b61341881613400565b82525050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b6134428161341e565b82525050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b6004811061348657613485613448565b5b50565b5f81905061349682613475565b919050565b5f6134a582613489565b9050919050565b6134b58161349b565b82525050565b60c082015f8201516134cf5f8501826133f1565b5060208201516134e2602085018261340f565b5060408201516134f5604085018261340f565b5060608201516135086060850182613439565b50608082015161351b60808501826134ac565b5060a082015161352e60a085018261340f565b50505050565b5f60c0820190506135475f8301846134bb565b92915050565b5f819050919050565b5f61357061356b613566846133c1565b61354d565b6133c1565b9050919050565b5f61358182613556565b9050919050565b5f61359282613577565b9050919050565b6135a281613588565b82525050565b5f6020820190506135bb5f830184613599565b92915050565b5f6135cb82613577565b9050919050565b6135db816135c1565b82525050565b5f6020820190506135f45f8301846135d2565b92915050565b613603816133e0565b811461360d575f5ffd5b50565b5f8135905061361e816135fa565b92915050565b5f60208284031215613639576136386132b8565b5b5f61364684828501613610565b91505092915050565b61365881613400565b8114613662575f5ffd5b50565b5f813590506136738161364f565b92915050565b5f6020828403121561368e5761368d6132b8565b5b5f61369b84828501613665565b91505092915050565b5f5f604083850312156136ba576136b96132b8565b5b5f6136c785828601613610565b92505060206136d885828601613382565b9150509250929050565b6136eb816133e0565b82525050565b5f6020820190506137045f8301846136e2565b92915050565b5f5f604083850312156137205761371f6132b8565b5b5f61372d85828601613610565b925050602061373e85828601613665565b9150509250929050565b61375181613400565b82525050565b5f60208201905061376a5f830184613748565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61380182613287565b915061380c83613287565b9250828201905080821115613824576138236137ca565b5b92915050565b5f61384461383f61383a8461341e565b61354d565b613287565b9050919050565b6138548161382a565b82525050565b5f60208201905061386d5f83018461384b565b92915050565b5f61387d82613287565b915061388883613287565b92508282039050818111156138a05761389f6137ca565b5b92915050565b5f6040820190506138b95f830185613290565b6138c660208301846136e2565b9392505050565b5f815190506138db8161336c565b92915050565b5f602082840312156138f6576138f56132b8565b5b5f613903848285016138cd565b91505092915050565b5f60608201905061391f5f830186613290565b61392c6020830185613290565b6139396040830184613290565b949350505050565b5f8151905061394f816135fa565b92915050565b5f6020828403121561396a576139696132b8565b5b5f61397784828501613941565b91505092915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f6139b66139b16139ac84613980565b61354d565b613989565b9050919050565b6139c68161399c565b82525050565b5f6020820190506139df5f8301846139bd565b92915050565b5f819050919050565b5f60ff82169050919050565b5f613a14613a0f613a0a846139e5565b61354d565b6139ee565b9050919050565b613a24816139fa565b82525050565b5f604082019050613a3d5f830185613a1b565b613a4a6020830184613290565b9392505050565b5f604082019050613a645f8301856136e2565b613a716020830184613290565b9392505050565b5f613a92613a8d613a8884613400565b61354d565b613287565b9050919050565b613aa281613a78565b82525050565b5f602082019050613abb5f830184613a99565b92915050565b5f819050919050565b5f613ae4613adf613ada84613ac1565b61354d565b6139ee565b9050919050565b613af481613aca565b82525050565b5f604082019050613b0d5f830185613aeb565b613b1a6020830184613290565b9392505050565b5f819050919050565b5f613b44613b3f613b3a84613b21565b61354d565b613287565b9050919050565b613b5481613b2a565b82525050565b5f604082019050613b6d5f8301856136e2565b613b7a6020830184613b4b565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220f9ed6ecb030fd7213b2e8762a8ad7b3700b086066d33c03f798812d663789e0264736f6c634300081e0033