0 txs
1.3k calls
constructor
constructor()
functions
allowance
viewfunction allowance(address owner, address spender) view returns (uint256)
asset
viewfunction asset() view returns (address)
balanceOf
viewfunction balanceOf(address account) view returns (uint256)
convertToAssets
viewfunction convertToAssets(uint256 shares) view returns (uint256)
convertToShares
viewfunction convertToShares(uint256 assets) view returns (uint256)
decimals
viewfunction decimals() view returns (uint8)
getActiveUserByIndex
viewfunction getActiveUserByIndex(uint256 index) view returns (address)
getActiveUsersLength
viewfunction getActiveUsersLength() view returns (uint256)
getAllRewarders
viewfunction getAllRewarders() view returns (address[])
MAX_REWARDERS_LENGTH
viewfunction MAX_REWARDERS_LENGTH() view returns (uint256)
maxDeposit
viewfunction maxDeposit(address) view returns (uint256)
maxMint
viewfunction maxMint(address) view returns (uint256)
maxRedeem
viewfunction maxRedeem(address owner) view returns (uint256)
maxWithdraw
viewfunction maxWithdraw(address owner) view returns (uint256)
minDepositAmount
viewfunction minDepositAmount() view returns (uint128)
minWithdrawAmount
viewfunction minWithdrawAmount() view returns (uint128)
name
viewfunction name() view returns (string)
owner
viewfunction owner() view returns (address)
previewDeposit
viewfunction previewDeposit(uint256 assets) view returns (uint256)
previewMint
viewfunction previewMint(uint256 shares) view returns (uint256)
previewRedeem
viewfunction previewRedeem(uint256 shares) view returns (uint256)
previewWithdraw
viewfunction previewWithdraw(uint256 assets) view returns (uint256)
symbol
viewfunction symbol() view returns (string)
totalAssets
viewfunction totalAssets() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
unstakingContract
viewfunction unstakingContract() view returns (address)
addRewarder
nonpayablefunction addRewarder(address rewarder)
approve
nonpayablefunction approve(address spender, uint256 value) returns (bool)
deposit
nonpayablefunction deposit(uint256 assets, address receiver) returns (uint256 shares)
initialize
nonpayablefunction initialize(address asset_, string name_, string symbol_, uint128 minDepositAmount_, uint128 minWithdrawAmount_)
mint
nonpayablefunction mint(uint256 shares, address receiver) returns (uint256)
redeem
nonpayablefunction redeem(uint256 shares, address receiver, address owner) returns (uint256 assets)
removeRewarder
nonpayablefunction removeRewarder(address rewarder)
renounceOwnership
nonpayablefunction renounceOwnership()
setMinDepositAmount
nonpayablefunction setMinDepositAmount(uint128 minDepositAmount_)
setMinWithdrawAmount
nonpayablefunction setMinWithdrawAmount(uint128 minWithdrawAmount_)
setUnstakingContract
nonpayablefunction setUnstakingContract(address unstakingContract_)
stake
nonpayablefunction stake(uint256 assets, address receiver, uint256 minShares) returns (uint256 shares)
transfer
nonpayablefunction transfer(address to, uint256 value) returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 value) returns (bool)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unstake
nonpayablefunction unstake(uint256 shares, address receiver, address owner, uint256 minAssets) returns (uint256 assets)
withdraw
nonpayablefunction withdraw(uint256 assets, address receiver, address owner) returns (uint256 shares)
events
Approval
event Approval(address indexed owner, address indexed spender, uint256 value)
Deposit
event Deposit(address indexed sender, address indexed owner, uint256 assets, uint256 shares)
Initialized
event Initialized(uint64 version)
MinDepositAmountSet
event MinDepositAmountSet(uint256 minDepositAmount)
MinWithdrawAmountSet
event MinWithdrawAmountSet(uint256 minWithdrawAmount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RewarderAdded
event RewarderAdded(address indexed rewarder)
RewarderRemoved
event RewarderRemoved(address indexed rewarder)
RewardsAccrued
event RewardsAccrued(uint256 amount)
Transfer
event Transfer(address indexed from, address indexed to, uint256 value)
UnstakingContractSet
event UnstakingContractSet(address indexed unstakingContract)
Withdraw
event Withdraw(address indexed sender, address indexed receiver, address indexed owner, uint256 assets, uint256 shares)
errors
ActiveRewardersLengthLimitExceeded
error ActiveRewardersLengthLimitExceeded()
AlreadyAdded
error AlreadyAdded(address rewarder)
DepositAmountTooLow
error DepositAmountTooLow()
ERC20InsufficientAllowance
error ERC20InsufficientAllowance(address spender, uint256 allowance, uint256 needed)
ERC20InsufficientBalance
error ERC20InsufficientBalance(address sender, uint256 balance, uint256 needed)
ERC20InvalidApprover
error ERC20InvalidApprover(address approver)
ERC20InvalidReceiver
error ERC20InvalidReceiver(address receiver)
ERC20InvalidSender
error ERC20InvalidSender(address sender)
ERC20InvalidSpender
error ERC20InvalidSpender(address spender)
ERC4626ExceededMaxDeposit
error ERC4626ExceededMaxDeposit(address receiver, uint256 assets, uint256 max)
ERC4626ExceededMaxMint
error ERC4626ExceededMaxMint(address receiver, uint256 shares, uint256 max)
ERC4626ExceededMaxRedeem
error ERC4626ExceededMaxRedeem(address owner, uint256 shares, uint256 max)
ERC4626ExceededMaxWithdraw
error ERC4626ExceededMaxWithdraw(address owner, uint256 assets, uint256 max)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RewarderNotExist
error RewarderNotExist(address rewarder)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
Slippage
error Slippage()
WithdrawAmountTooLow
error WithdrawAmountTooLow()
ZeroAddress
error ZeroAddress()
ZeroAmount
error ZeroAmount()
creation bytecode
0x608060405234801561000f575f5ffd5b5061001e61002360201b60201c565b61019e565b5f61003261012160201b60201c565b9050805f0160089054906101000a900460ff161561007c576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff161461011e5767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff6040516101159190610185565b60405180910390a15b50565b5f5f61013161013a60201b60201c565b90508091505090565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b5f67ffffffffffffffff82169050919050565b61017f81610163565b82525050565b5f6020820190506101985f830184610176565b92915050565b614e2f806101ab5f395ff3fe608060405234801561000f575f5ffd5b5060043610610267575f3560e01c8063769cf5b31161014f578063ba087652116100c1578063ce96cb7711610085578063ce96cb77146107e5578063d905777e14610815578063dd62ed3e14610845578063ef8b30f714610875578063f2fde38b146108a5578063fa28bd29146108c157610267565b8063ba0876521461071d578063c5ab33651461074d578063c63d75b614610769578063c6e6f59214610799578063cb908b9d146107c957610267565b8063a9059cbb11610113578063a9059cbb14610623578063ad8a01af14610653578063afb36ec014610683578063b3d7f6b91461069f578063b460af94146106cf578063b893c06a146106ff57610267565b8063769cf5b31461057d57806378dd8a2b146105995780638da5cb5b146105b757806394bf804d146105d557806395d89b411461060557610267565b806338d52e0f116101e85780635fcdffe6116101ac5780635fcdffe6146104a7578063645006ca146104c55780636e553f65146104e35780636e9c931c1461051357806370a0823114610543578063715018a61461057357610267565b806338d52e0f146103ef578063402d267d1461040d578063457e1a491461043d5780634cdad5061461045b57806356d3590b1461048b57610267565b80630a28a4771161022f5780630a28a4771461033757806318160ddd146103675780631f945d9a1461038557806323b872dd146103a1578063313ce567146103d157610267565b806301e1d1141461026b578063025b87191461028957806306fdde03146102b957806307a2d13a146102d7578063095ea7b314610307575b5f5ffd5b6102736108df565b6040516102809190613e54565b60405180910390f35b6102a3600480360381019061029e9190613ea8565b6109ac565b6040516102b09190613f12565b60405180910390f35b6102c16109c8565b6040516102ce9190613f9b565b60405180910390f35b6102f160048036038101906102ec9190613ea8565b610a66565b6040516102fe9190613e54565b60405180910390f35b610321600480360381019061031c9190613fe5565b610a78565b60405161032e919061403d565b60405180910390f35b610351600480360381019061034c9190613ea8565b610a9a565b60405161035e9190613e54565b60405180910390f35b61036f610aad565b60405161037c9190613e54565b60405180910390f35b61039f600480360381019061039a919061409b565b610ac4565b005b6103bb60048036038101906103b691906140c6565b610ad8565b6040516103c8919061403d565b60405180910390f35b6103d9610b06565b6040516103e69190614131565b60405180910390f35b6103f7610b3b565b6040516104049190613f12565b60405180910390f35b6104276004803603810190610422919061414a565b610b70565b6040516104349190613e54565b60405180910390f35b610445610b99565b6040516104529190614184565b60405180910390f35b61047560048036038101906104709190613ea8565b610bbb565b6040516104829190613e54565b60405180910390f35b6104a560048036038101906104a0919061414a565b610bcd565b005b6104af610f33565b6040516104bc9190613f12565b60405180910390f35b6104cd610f57565b6040516104da9190614184565b60405180910390f35b6104fd60048036038101906104f8919061419d565b610f78565b60405161050a9190613e54565b60405180910390f35b61052d600480360381019061052891906141db565b611230565b60405161053a9190613e54565b60405180910390f35b61055d6004803603810190610558919061414a565b61127e565b60405161056a9190613e54565b60405180910390f35b61057b6112d1565b005b61059760048036038101906105929190614392565b6112e4565b005b6105a16114fb565b6040516105ae9190613e54565b60405180910390f35b6105bf61150b565b6040516105cc9190613f12565b60405180910390f35b6105ef60048036038101906105ea919061419d565b611540565b6040516105fc9190613e54565b60405180910390f35b61060d6117fd565b60405161061a9190613f9b565b60405180910390f35b61063d60048036038101906106389190613fe5565b61189b565b60405161064a919061403d565b60405180910390f35b61066d60048036038101906106689190614441565b6118bd565b60405161067a9190613e54565b60405180910390f35b61069d6004803603810190610698919061409b565b61190d565b005b6106b960048036038101906106b49190613ea8565b611921565b6040516106c69190613e54565b60405180910390f35b6106e960048036038101906106e491906144a5565b611934565b6040516106f69190613e54565b60405180910390f35b610707611cc2565b6040516107149190613e54565b60405180910390f35b610737600480360381019061073291906144a5565b611cc7565b6040516107449190613e54565b60405180910390f35b6107676004803603810190610762919061414a565b612055565b005b610783600480360381019061077e919061414a565b6120e2565b6040516107909190613e54565b60405180910390f35b6107b360048036038101906107ae9190613ea8565b61210b565b6040516107c09190613e54565b60405180910390f35b6107e360048036038101906107de919061414a565b61211d565b005b6107ff60048036038101906107fa919061414a565b6123db565b60405161080c9190613e54565b60405180910390f35b61082f600480360381019061082a919061414a565b6123f5565b60405161083c9190613e54565b60405180910390f35b61085f600480360381019061085a91906144f5565b612406565b60405161086c9190613e54565b60405180910390f35b61088f600480360381019061088a9190613ea8565b612496565b60405161089c9190613e54565b60405180910390f35b6108bf60048036038101906108ba919061414a565b6124a8565b005b6108c961252c565b6040516108d691906145ea565b60405180910390f35b5f5f5f90505f5f90505b6108f3600261253d565b811015610997575f61090f82600261255090919063ffffffff16565b90508073ffffffffffffffffffffffffffffffffffffffff1663d9621f9e6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561095a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061097e919061461e565b836109899190614676565b9250508060010190506108e9565b50806006546109a69190614676565b91505090565b5f6109c182600461255090919063ffffffff16565b9050919050565b60605f6109d3612567565b90508060030180546109e4906146d6565b80601f0160208091040260200160405190810160405280929190818152602001828054610a10906146d6565b8015610a5b5780601f10610a3257610100808354040283529160200191610a5b565b820191905f5260205f20905b815481529060010190602001808311610a3e57829003601f168201915b505050505091505090565b5f610a71825f61258e565b9050919050565b5f5f610a826125e6565b9050610a8f8185856125ed565b600191505092915050565b5f610aa68260016125ff565b9050919050565b5f5f610ab7612567565b9050806002015491505090565b610acc612657565b610ad5816126de565b50565b5f5f610ae26125e6565b9050610aef85828561279c565b610afa85858561282f565b60019150509392505050565b5f5f610b1061291f565b9050610b1a612946565b815f0160149054906101000a900460ff16610b359190614706565b91505090565b5f5f610b4561291f565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b600160109054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f610bc6825f61258e565b9050919050565b5f610bd8600261253d565b90505f610be3610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c1f9190613f12565b602060405180830381865afa158015610c3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c5e919061461e565b90505f5f90505b83811015610cfa57610c8181600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610cca573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cee919061461e565b50806001019050610c65565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d359190613f12565b602060405180830381865afa158015610d50573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d74919061461e565b90505f8282610d83919061473a565b90505f8114610ddc578060065f828254610d9d9190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b81604051610dd39190613e54565b60405180910390a15b610de4612657565b600a610df0600261253d565b10610e27576040517f39c77faf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610e8c576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610ea187600261294d90919063ffffffff16565b9050808790610ee6576040517fb6a9704f000000000000000000000000000000000000000000000000000000008152600401610edd9190613f12565b60405180910390fd5b508673ffffffffffffffffffffffffffffffffffffffff167f9dfd431959d2d3358e3eb909555ad574123ea5881ff0e05a80f66d4984710c1b60405160405180910390a250505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b5f5f610f84600261253d565b90505f610f8f610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610fcb9190613f12565b602060405180830381865afa158015610fe6573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061100a919061461e565b90505f5f90505b838110156110a65761102d81600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611076573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109a919061461e565b50806001019050611011565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e19190613f12565b602060405180830381865afa1580156110fc573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611120919061461e565b90505f828261112f919061473a565b90505f8114611188578060065f8282546111499190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b8160405161117f9190613e54565b60405180910390a15b61119061297a565b60015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168810156111f9576040517f55fcd02700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61120388886129ce565b95508760065f8282546112169190614676565b92505081905550611225612a4e565b505050505092915050565b5f61123b8484610f78565b905081811015611277576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9392505050565b5f5f611288612567565b9050805f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054915050919050565b6112d9612657565b6112e25f612a65565b565b5f6112ed612b36565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156113355750825b90505f60018367ffffffffffffffff1614801561136857505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015611376575080155b156113ad576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083156113fa576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff160361145f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6114688a612b49565b6114728989612b5d565b61147b33612b73565b611483612b87565b61148c87612b99565b611495866126de565b83156114ef575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d260016040516114e691906147c2565b60405180910390a15b50505050505050505050565b5f611506600461253d565b905090565b5f5f611515612c56565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f5f61154c600261253d565b90505f611557610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115939190613f12565b602060405180830381865afa1580156115ae573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115d2919061461e565b90505f5f90505b8381101561166e576115f581600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561163e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611662919061461e565b508060010190506115d9565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016116a99190613f12565b602060405180830381865afa1580156116c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116e8919061461e565b90505f82826116f7919061473a565b90505f8114611750578060065f8282546117119190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b816040516117479190613e54565b60405180910390a15b61175861297a565b5f6117638989612c7d565b905060015f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff168110156117ce576040517f55fcd02700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060065f8282546117df9190614676565b92505081905550809650506117f2612a4e565b505050505092915050565b60605f611808612567565b9050806004018054611819906146d6565b80601f0160208091040260200160405190810160405280929190818152602001828054611845906146d6565b80156118905780601f1061186757610100808354040283529160200191611890565b820191905f5260205f20905b81548152906001019060200180831161187357829003601f168201915b505050505091505090565b5f5f6118a56125e6565b90506118b281858561282f565b600191505092915050565b5f6118c9858585611cc7565b905081811015611905576040517f7dd37f7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b949350505050565b611915612657565b61191e81612b99565b50565b5f61192d82600161258e565b9050919050565b5f5f611940600261253d565b90505f61194b610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016119879190613f12565b602060405180830381865afa1580156119a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119c6919061461e565b90505f5f90505b83811015611a62576119e981600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611a32573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a56919061461e565b508060010190506119cd565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a9d9190613f12565b602060405180830381865afa158015611ab8573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611adc919061461e565b90505f8282611aeb919061473a565b90505f8114611b44578060065f828254611b059190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b81604051611b3b9190613e54565b60405180910390a15b611b4c61297a565b600160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16891015611bb6576040517fba43ea3700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611c8757611c188a828a612cfd565b96508073ffffffffffffffffffffffffffffffffffffffff1663c2a672e08a8c6040518363ffffffff1660e01b8152600401611c559291906147db565b5f604051808303815f87803b158015611c6c575f5ffd5b505af1158015611c7e573d5f5f3e3d5ffd5b50505050611c95565b611c928a8a8a612cfd565b96505b8960065f828254611ca6919061473a565b9250508190555050611cb6612a4e565b50505050509392505050565b600a81565b5f5f611cd3600261253d565b90505f611cde610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611d1a9190613f12565b602060405180830381865afa158015611d35573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d59919061461e565b90505f5f90505b83811015611df557611d7c81600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611dc5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de9919061461e565b50806001019050611d60565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611e309190613f12565b602060405180830381865afa158015611e4b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e6f919061461e565b90505f8282611e7e919061473a565b90505f8114611ed7578060065f828254611e989190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b81604051611ece9190613e54565b60405180910390a15b611edf61297a565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611fb057611f418a828a612d7f565b96508073ffffffffffffffffffffffffffffffffffffffff1663c2a672e08a896040518363ffffffff1660e01b8152600401611f7e9291906147db565b5f604051808303815f87803b158015611f95575f5ffd5b505af1158015611fa7573d5f5f3e3d5ffd5b50505050611fbe565b611fbb8a8a8a612d7f565b96505b600160109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16871015612028576040517fba43ea3700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8660065f828254612039919061473a565b9250508190555050612049612a4e565b50505050509392505050565b61205d612657565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff167f033dee63752da639aaaf16a7c8bcfdc78334975a8d5f323ea01df02d2be1b5e160405160405180910390a250565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9050919050565b5f612116825f6125ff565b9050919050565b5f612128600261253d565b90505f612133610b3b565b90505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161216f9190613f12565b602060405180830381865afa15801561218a573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ae919061461e565b90505f5f90505b8381101561224a576121d181600261255090919063ffffffff16565b73ffffffffffffffffffffffffffffffffffffffff16634e71d92d6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561221a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061223e919061461e565b508060010190506121b5565b505f8273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122859190613f12565b602060405180830381865afa1580156122a0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122c4919061461e565b90505f82826122d3919061473a565b90505f811461232c578060065f8282546122ed9190614676565b925050819055507fdd26e3e6900868ec9d7dc4861d98b7cdbd22d43efe83591581a723409c109b4b816040516123239190613e54565b60405180910390a15b612334612657565b5f612349876002612e0190919063ffffffff16565b905080879061238e576040517fc41315910000000000000000000000000000000000000000000000000000000081526004016123859190613f12565b60405180910390fd5b508673ffffffffffffffffffffffffffffffffffffffff167fce699c579f0b70ea4ccd6a4b38be26726a2c248b89c7102ccbc5d0f3060ef6d060405160405180910390a250505050505050565b5f6123ee6123e88361127e565b5f61258e565b9050919050565b5f6123ff8261127e565b9050919050565b5f5f612410612567565b9050806001015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205491505092915050565b5f6124a1825f6125ff565b9050919050565b6124b0612657565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612520575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016125179190613f12565b60405180910390fd5b61252981612a65565b50565b60606125386002612e2e565b905090565b5f612549825f01612e4d565b9050919050565b5f61255d835f0183612e5c565b5f1c905092915050565b5f7f52c63247e1f47db19d5ce0460030c497f067ca4cebf71ba98eeadabe20bace00905090565b5f6125de600161259c6108df565b6125a69190614676565b6125ae612946565b600a6125ba9190614931565b6125c2610aad565b6125cc9190614676565b8486612e83909392919063ffffffff16565b905092915050565b5f33905090565b6125fa8383836001612ed0565b505050565b5f61264f61260b612946565b600a6126179190614931565b61261f610aad565b6126299190614676565b60016126336108df565b61263d9190614676565b8486612e83909392919063ffffffff16565b905092915050565b61265f6125e6565b73ffffffffffffffffffffffffffffffffffffffff1661267d61150b565b73ffffffffffffffffffffffffffffffffffffffff16146126dc576126a06125e6565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016126d39190613f12565b60405180910390fd5b565b5f816fffffffffffffffffffffffffffffffff1603612729576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600160106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507f755134315a797bb3da2a1dd9a4fe4183310c83d99e9b32ca94eb17d356a083e68160405161279191906149ab565b60405180910390a150565b5f6127a78484612406565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811015612829578181101561281a578281836040517ffb8f41b2000000000000000000000000000000000000000000000000000000008152600401612811939291906149c4565b60405180910390fd5b61282884848484035f612ed0565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361289f575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016128969190613f12565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361290f575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016129069190613f12565b60405180910390fd5b61291a8383836130ad565b505050565b5f7f0773e532dfede91f04b12a73d3d2acd361424f41f76b4fb79f090161e36b4e00905090565b5f5f905090565b5f612972835f018373ffffffffffffffffffffffffffffffffffffffff165f1b6131a7565b905092915050565b5f61298361320e565b90506002815f0154036129c2576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002815f018190555050565b5f5f6129d983610b70565b905080841115612a24578284826040517f79012fb2000000000000000000000000000000000000000000000000000000008152600401612a1b939291906149c4565b60405180910390fd5b5f612a2e85612496565b9050612a43612a3b6125e6565b858784613235565b809250505092915050565b5f612a5761320e565b90506001815f018190555050565b5f612a6e612c56565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f5f612b406132bf565b90508091505090565b612b516132e8565b612b5a81613328565b50565b612b656132e8565b612b6f82826133ba565b5050565b612b7b6132e8565b612b84816133f6565b50565b612b8f6132e8565b612b9761347a565b565b5f816fffffffffffffffffffffffffffffffff1603612be4576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055507fbdde72a6d8d8b42770c9899945ccdce09d0c5c794d3326cdb2d2cca61b12a9fc81604051612c4b91906149ab565b60405180910390a150565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b5f5f612c88836120e2565b905080841115612cd3578284826040517f284ff667000000000000000000000000000000000000000000000000000000008152600401612cca939291906149c4565b60405180910390fd5b5f612cdd85611921565b9050612cf2612cea6125e6565b858388613235565b809250505092915050565b5f5f612d08836123db565b905080851115612d53578285826040517ffe9cceec000000000000000000000000000000000000000000000000000000008152600401612d4a939291906149c4565b60405180910390fd5b5f612d5d86610a9a565b9050612d73612d6a6125e6565b86868985613499565b80925050509392505050565b5f5f612d8a836123f5565b905080851115612dd5578285826040517fb94abeec000000000000000000000000000000000000000000000000000000008152600401612dcc939291906149c4565b60405180910390fd5b5f612ddf86610bbb565b9050612df5612dec6125e6565b8686848a613499565b80925050509392505050565b5f612e26835f018373ffffffffffffffffffffffffffffffffffffffff165f1b613579565b905092915050565b60605f612e3c835f01613675565b905060608190508092505050919050565b5f815f01805490509050919050565b5f825f018281548110612e7257612e716149f9565b5b905f5260205f200154905092915050565b5f612eb1612e90836136ce565b8015612eac57505f8480612ea757612ea6614a26565b5b868809115b6136fb565b612ebc868686613706565b612ec69190614676565b9050949350505050565b5f612ed9612567565b90505f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612f4b575f6040517fe602df05000000000000000000000000000000000000000000000000000000008152600401612f429190613f12565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603612fbb575f6040517f94280d62000000000000000000000000000000000000000000000000000000008152600401612fb29190613f12565b60405180910390fd5b82816001015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081156130a6578373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258560405161309d9190613e54565b60405180910390a35b5050505050565b82826130ba8585856137e5565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461312d575f6130f78261127e565b146131165761311081600461294d90919063ffffffff16565b5061312c565b61312a816004612e0190919063ffffffff16565b505b5b505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146131a1575f61316b8261127e565b1461318a5761318481600461294d90919063ffffffff16565b506131a0565b61319e816004612e0190919063ffffffff16565b505b5b50505050565b5f6131b28383613a14565b61320457825f0182908060018154018082558091505060019003905f5260205f20015f9091909190915055825f0180549050836001015f8481526020019081526020015f208190555060019050613208565b5f90505b92915050565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00905090565b613248613240610b3b565b853085613a34565b6132528382613ab6565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fdcbc1c05240f31ff3ad067ef1ee35ce4997762752e3a095284754544f4c709d784846040516132b1929190614a53565b60405180910390a350505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005f1b905090565b6132f0613b35565b613326576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6133306132e8565b5f61333961291f565b90505f5f61334684613b53565b9150915081613356576012613358565b805b835f0160146101000a81548160ff021916908360ff16021790555083835f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6133c26132e8565b5f6133cb612567565b9050828160030190816133de9190614c11565b50818160040190816133f09190614c11565b50505050565b6133fe6132e8565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361346e575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016134659190613f12565b60405180910390fd5b61347781612a65565b50565b6134826132e8565b5f61348b61320e565b90506001815f018190555050565b8273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146134d8576134d783868361279c565b5b6134e28382613c5c565b6134f46134ed610b3b565b8584613cdb565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167ffbde797d201c681b91056529119e0b02407c7bb96a4a2c75c01fc9667232c8db858560405161356a929190614a53565b60405180910390a45050505050565b5f5f836001015f8481526020019081526020015f205490505f811461366a575f6001826135a6919061473a565b90505f6001865f01805490506135bc919061473a565b9050808214613622575f865f0182815481106135db576135da6149f9565b5b905f5260205f200154905080875f0184815481106135fc576135fb6149f9565b5b905f5260205f20018190555083876001015f8381526020019081526020015f2081905550505b855f0180548061363557613634614ce0565b5b600190038181905f5260205f20015f90559055856001015f8681526020019081526020015f205f90556001935050505061366f565b5f9150505b92915050565b6060815f018054806020026020016040519081016040528092919081815260200182805480156136c257602002820191905f5260205f20905b8154815260200190600101908083116136ae575b50505050509050919050565b5f600160028360038111156136e6576136e5614d0d565b5b6136f09190614d3a565b60ff16149050919050565b5f8115159050919050565b5f5f5f6137138686613d5a565b915091505f82036137385783818161372e5761372d614a26565b5b04925050506137de565b818411613757576137566137515f861460126011613d77565b613d90565b5b5f8486880990508181118303925080820391505f855f038616905080860495508083049250600181825f0304019050808402831792505f600287600302189050808702600203810290508087026002038102905080870260020381029050808702600203810290508087026002038102905080870260020381029050808402955050505050505b9392505050565b5f6137ee612567565b90505f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036138425781816002015f8282546138369190614676565b92505081905550613914565b5f815f015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156138cd578481846040517fe450d38c0000000000000000000000000000000000000000000000000000000081526004016138c4939291906149c4565b60405180910390fd5b828103825f015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361395d5781816002015f82825403925050819055506139a9565b81815f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613a069190613e54565b60405180910390a350505050565b5f5f836001015f8481526020019081526020015f20541415905092915050565b613ab0848573ffffffffffffffffffffffffffffffffffffffff166323b872dd868686604051602401613a6993929190614d6a565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613da1565b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613b26575f6040517fec442f05000000000000000000000000000000000000000000000000000000008152600401613b1d9190613f12565b60405180910390fd5b613b315f83836130ad565b5050565b5f613b3e612b36565b5f0160089054906101000a900460ff16905090565b5f5f5f5f8473ffffffffffffffffffffffffffffffffffffffff1660405160240160405160208183030381529060405263313ce56760e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613bc69190614de3565b5f60405180830381855afa9150503d805f8114613bfe576040519150601f19603f3d011682016040523d82523d5f602084013e613c03565b606091505b5091509150818015613c1757506020815110155b15613c4e575f81806020019051810190613c31919061461e565b905060ff80168111613c4c5760018194509450505050613c57565b505b5f5f9350935050505b915091565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613ccc575f6040517f96c6fd1e000000000000000000000000000000000000000000000000000000008152600401613cc39190613f12565b60405180910390fd5b613cd7825f836130ad565b5050565b613d55838473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d0e9291906147db565b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050613da1565b505050565b5f5f5f198385098385029150818110828203039250509250929050565b5f613d81846136fb565b82841802821890509392505050565b634e487b715f52806020526024601cfd5b5f5f60205f8451602086015f885af180613dc0576040513d5f823e3d81fd5b3d92505f519150505f8214613dd9576001811415613df4565b5f8473ffffffffffffffffffffffffffffffffffffffff163b145b15613e3657836040517f5274afe7000000000000000000000000000000000000000000000000000000008152600401613e2d9190613f12565b60405180910390fd5b50505050565b5f819050919050565b613e4e81613e3c565b82525050565b5f602082019050613e675f830184613e45565b92915050565b5f604051905090565b5f5ffd5b5f5ffd5b613e8781613e3c565b8114613e91575f5ffd5b50565b5f81359050613ea281613e7e565b92915050565b5f60208284031215613ebd57613ebc613e76565b5b5f613eca84828501613e94565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613efc82613ed3565b9050919050565b613f0c81613ef2565b82525050565b5f602082019050613f255f830184613f03565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613f6d82613f2b565b613f778185613f35565b9350613f87818560208601613f45565b613f9081613f53565b840191505092915050565b5f6020820190508181035f830152613fb38184613f63565b905092915050565b613fc481613ef2565b8114613fce575f5ffd5b50565b5f81359050613fdf81613fbb565b92915050565b5f5f60408385031215613ffb57613ffa613e76565b5b5f61400885828601613fd1565b925050602061401985828601613e94565b9150509250929050565b5f8115159050919050565b61403781614023565b82525050565b5f6020820190506140505f83018461402e565b92915050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61407a81614056565b8114614084575f5ffd5b50565b5f8135905061409581614071565b92915050565b5f602082840312156140b0576140af613e76565b5b5f6140bd84828501614087565b91505092915050565b5f5f5f606084860312156140dd576140dc613e76565b5b5f6140ea86828701613fd1565b93505060206140fb86828701613fd1565b925050604061410c86828701613e94565b9150509250925092565b5f60ff82169050919050565b61412b81614116565b82525050565b5f6020820190506141445f830184614122565b92915050565b5f6020828403121561415f5761415e613e76565b5b5f61416c84828501613fd1565b91505092915050565b61417e81614056565b82525050565b5f6020820190506141975f830184614175565b92915050565b5f5f604083850312156141b3576141b2613e76565b5b5f6141c085828601613e94565b92505060206141d185828601613fd1565b9150509250929050565b5f5f5f606084860312156141f2576141f1613e76565b5b5f6141ff86828701613e94565b935050602061421086828701613fd1565b925050604061422186828701613e94565b9150509250925092565b5f61423582613ef2565b9050919050565b6142458161422b565b811461424f575f5ffd5b50565b5f813590506142608161423c565b92915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6142a482613f53565b810181811067ffffffffffffffff821117156142c3576142c261426e565b5b80604052505050565b5f6142d5613e6d565b90506142e1828261429b565b919050565b5f67ffffffffffffffff821115614300576142ff61426e565b5b61430982613f53565b9050602081019050919050565b828183375f83830152505050565b5f614336614331846142e6565b6142cc565b9050828152602081018484840111156143525761435161426a565b5b61435d848285614316565b509392505050565b5f82601f83011261437957614378614266565b5b8135614389848260208601614324565b91505092915050565b5f5f5f5f5f60a086880312156143ab576143aa613e76565b5b5f6143b888828901614252565b955050602086013567ffffffffffffffff8111156143d9576143d8613e7a565b5b6143e588828901614365565b945050604086013567ffffffffffffffff81111561440657614405613e7a565b5b61441288828901614365565b935050606061442388828901614087565b925050608061443488828901614087565b9150509295509295909350565b5f5f5f5f6080858703121561445957614458613e76565b5b5f61446687828801613e94565b945050602061447787828801613fd1565b935050604061448887828801613fd1565b925050606061449987828801613e94565b91505092959194509250565b5f5f5f606084860312156144bc576144bb613e76565b5b5f6144c986828701613e94565b93505060206144da86828701613fd1565b92505060406144eb86828701613fd1565b9150509250925092565b5f5f6040838503121561450b5761450a613e76565b5b5f61451885828601613fd1565b925050602061452985828601613fd1565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61456581613ef2565b82525050565b5f614576838361455c565b60208301905092915050565b5f602082019050919050565b5f61459882614533565b6145a2818561453d565b93506145ad8361454d565b805f5b838110156145dd5781516145c4888261456b565b97506145cf83614582565b9250506001810190506145b0565b5085935050505092915050565b5f6020820190508181035f830152614602818461458e565b905092915050565b5f8151905061461881613e7e565b92915050565b5f6020828403121561463357614632613e76565b5b5f6146408482850161460a565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61468082613e3c565b915061468b83613e3c565b92508282019050808211156146a3576146a2614649565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806146ed57607f821691505b602082108103614700576146ff6146a9565b5b50919050565b5f61471082614116565b915061471b83614116565b9250828201905060ff81111561473457614733614649565b5b92915050565b5f61474482613e3c565b915061474f83613e3c565b925082820390508181111561476757614766614649565b5b92915050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f819050919050565b5f6147ac6147a76147a28461476d565b614789565b614776565b9050919050565b6147bc81614792565b82525050565b5f6020820190506147d55f8301846147b3565b92915050565b5f6040820190506147ee5f830185613f03565b6147fb6020830184613e45565b9392505050565b5f8160011c9050919050565b5f5f8291508390505b60018511156148575780860481111561483357614832614649565b5b60018516156148425780820291505b808102905061485085614802565b9450614817565b94509492505050565b5f8261486f576001905061492a565b8161487c575f905061492a565b8160018114614892576002811461489c576148cb565b600191505061492a565b60ff8411156148ae576148ad614649565b5b8360020a9150848211156148c5576148c4614649565b5b5061492a565b5060208310610133831016604e8410600b84101617156149005782820a9050838111156148fb576148fa614649565b5b61492a565b61490d848484600161480e565b9250905081840481111561492457614923614649565b5b81810290505b9392505050565b5f61493b82613e3c565b915061494683614116565b92506149737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614860565b905092915050565b5f61499561499061498b84614056565b614789565b613e3c565b9050919050565b6149a58161497b565b82525050565b5f6020820190506149be5f83018461499c565b92915050565b5f6060820190506149d75f830186613f03565b6149e46020830185613e45565b6149f16040830184613e45565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f604082019050614a665f830185613e45565b614a736020830184613e45565b9392505050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614ad67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a9b565b614ae08683614a9b565b95508019841693508086168417925050509392505050565b5f614b12614b0d614b0884613e3c565b614789565b613e3c565b9050919050565b5f819050919050565b614b2b83614af8565b614b3f614b3782614b19565b848454614aa7565b825550505050565b5f5f905090565b614b56614b47565b614b61818484614b22565b505050565b5b81811015614b8457614b795f82614b4e565b600181019050614b67565b5050565b601f821115614bc957614b9a81614a7a565b614ba384614a8c565b81016020851015614bb2578190505b614bc6614bbe85614a8c565b830182614b66565b50505b505050565b5f82821c905092915050565b5f614be95f1984600802614bce565b1980831691505092915050565b5f614c018383614bda565b9150826002028217905092915050565b614c1a82613f2b565b67ffffffffffffffff811115614c3357614c3261426e565b5b614c3d82546146d6565b614c48828285614b88565b5f60209050601f831160018114614c79575f8415614c67578287015190505b614c718582614bf6565b865550614cd8565b601f198416614c8786614a7a565b5f5b82811015614cae57848901518255600182019150602085019450602081019050614c89565b86831015614ccb5784890151614cc7601f891682614bda565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f614d4482614116565b9150614d4f83614116565b925082614d5f57614d5e614a26565b5b828206905092915050565b5f606082019050614d7d5f830186613f03565b614d8a6020830185613f03565b614d976040830184613e45565b949350505050565b5f81519050919050565b5f81905092915050565b5f614dbd82614d9f565b614dc78185614da9565b9350614dd7818560208601613f45565b80840191505092915050565b5f614dee8284614db3565b91508190509291505056fea26469706673582212201627db655ef2548189325fcc29f3fc3c309788b8d517d74440cadb739ed94bdb64736f6c634300081e0033