63 txs
95 calls
constructor
constructor(address _proofSigner, address _BioFiTokenAddress)
functions
BioFiTokenAddress
viewfunction BioFiTokenAddress() view returns (address)
emergencyWithdrawalActive
viewfunction emergencyWithdrawalActive() view returns (bool)
getStakerCount
viewfunction getStakerCount() view returns (uint256 count)
getTierCount
viewfunction getTierCount() view returns (uint256 count)
getTiers
viewfunction getTiers() view returns (tuple[] stakeTiers)
isOwner
viewfunction isOwner() view returns (bool)
owner
viewfunction owner() view returns (address)
readPrincipalInterest
viewfunction readPrincipalInterest(address staker, uint256 activityCount) view returns (uint256 principal, uint256 interest, uint256 storedInterest)
readStake
viewfunction readStake(address staker) view returns (tuple stake)
readStakeInterest
viewfunction readStakeInterest(address staker, uint256 activityCount) view returns (tuple stake, uint256 interest)
rewardsStorage
viewfunction rewardsStorage(address) view returns (uint256)
stakerIds
viewfunction stakerIds(address) view returns (bool exists, uint256 id)
stakers
viewfunction stakers(uint256) view returns (address)
tiers
viewfunction tiers(uint256) view returns (bool isActive, string name, uint256 requiredActivities, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 minStake, uint256 maxStake, uint256 stakeDuration)
totalInvestment
viewfunction totalInvestment(uint256) view returns (uint256)
verifyMessage
purefunction verifyMessage(string message, bytes signature) pure returns (address signer)
closeStake
nonpayablefunction closeStake(uint256 points, uint256 expiresAt, bytes activityProof)
createStake
nonpayablefunction createStake(uint256 tierId, uint256 BioFiTokenAmount) returns (uint256 completionTimestamp)
createStakeTier
nonpayablefunction createStakeTier(string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 minStake, uint256 maxStake, uint256 stakeDuration) returns (uint256 index)
disableEmergencyTokenWithdrawals
nonpayablefunction disableEmergencyTokenWithdrawals()
importStakes
nonpayablefunction importStakes(address[] _stakers, uint256[] _tierIds, uint256[] _BioFiTokenAmounts, uint256[] _customTimestamps, uint256[] _customStartTimestamps, uint256[] _rewardsStorageAmounts) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setActive
nonpayablefunction setActive(uint256 tierIndex, bool newState)
setProofSigner
nonpayablefunction setProofSigner(address _proofSigner)
topUpStake
nonpayablefunction topUpStake(uint256 BioFiTokenAmount, uint256 points, uint256 expiresAt, bytes activityProof) returns (uint256 completionTimestamp)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeStake
nonpayablefunction upgradeStake(uint256 newTier, uint256 points, uint256 expiresAt, bytes activityProof) returns (uint256 completionTimestamp)
withdrawTokens
nonpayablefunction withdrawTokens(address token, address to, uint256 amount)
events
CloseStake
event CloseStake(address staker, uint256 principal, uint256 interest)
CreateStake
event CreateStake(address staker, uint256 stakeAmount, uint256 tierId, uint256 completionDate)
CreateStakeTier
event CreateStakeTier(uint256 tierId, string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 minStake, uint256 maxStake, uint256 stakeDuration)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetActive
event SetActive(uint256 tierId, bool isActive)
SetProofSigner
event SetProofSigner(address proofSigner)
TopUpStake
event TopUpStake(address staker, uint256 topUpAmount)
UpgradeStake
event UpgradeStake(address staker, uint256 oldTier, uint256 newTier)
errors
No errors.
creation bytecode
0x608060405234801561000f575f80fd5b50604051616230380380616230833981810160405281019061003191906102c6565b5f61004061026160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361014a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101419061035e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101af906103c6565b60405180910390fd5b600160098190555081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6101000a81548160ff0219169083151502179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506103e4565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102958261026c565b9050919050565b6102a58161028b565b81146102af575f80fd5b50565b5f815190506102c08161029c565b92915050565b5f80604083850312156102dc576102db610268565b5b5f6102e9858286016102b2565b92505060206102fa858286016102b2565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c69642070726f6f66207369676e65720000000000000000000000005f82015250565b5f610348601483610304565b915061035382610314565b602082019050919050565b5f6020820190508181035f8301526103758161033c565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6103b0601583610304565b91506103bb8261037c565b602082019050919050565b5f6020820190508181035f8301526103dd816103a4565b9050919050565b615e3f806103f15f395ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c80638da5cb5b116100f7578063d7fa023d11610095578063ec7f98281161006f578063ec7f98281461054a578063f2fde38b14610568578063f962a22a14610584578063fd5e6dd1146105b4576101c2565b8063d7fa023d146104e0578063de17057014610510578063e60a955d1461052e576101c2565b806392b6a078116100d157806392b6a0781461045957806392e23e711461046357806394e395781461047f578063c8ae0d7d146104af576101c2565b80638da5cb5b146104015780638f32d59b1461041f57806391c6c0fe1461043d576101c2565b80634f21e2df1161016457806367184e281161013e57806367184e2814610378578063715018a61461039657806371ac8e8f146103a057806378631f35146103d1576101c2565b80634f21e2df146102fc57806355b069d41461032c5780635e35359e1461035c576101c2565b806317d7f795116101a057806317d7f7951461024e57806332a643701461026c57806333186f851461029c57806341f89cfe146102cc576101c2565b8063039af9eb146101c65780630ebe0e18146101fe5780631319649d14610230575b5f80fd5b6101e060048036038101906101db91906138ed565b6105e4565b6040516101f5999897969594939291906139b1565b60405180910390f35b61021860048036038101906102139190613a9d565b6106cf565b60405161022793929190613adb565b60405180910390f35b6102386107cd565b6040516102459190613b10565b60405180910390f35b6102566107d9565b6040516102639190613b38565b60405180910390f35b610286600480360381019061028191906138ed565b6107fe565b6040516102939190613b10565b60405180910390f35b6102b660048036038101906102b19190613c7d565b610813565b6040516102c39190613b10565b60405180910390f35b6102e660048036038101906102e19190613cfd565b610bc2565b6040516102f39190613b10565b60405180910390f35b61031660048036038101906103119190613eac565b610bd7565b6040516103239190613fdd565b60405180910390f35b61034660048036038101906103419190613c7d565b610e6d565b6040516103539190613b10565b60405180910390f35b61037660048036038101906103719190613ff6565b61124b565b005b610380611416565b60405161038d9190613b10565b60405180910390f35b61039e611422565b005b6103ba60048036038101906103b59190613a9d565b611523565b6040516103c89291906140f0565b60405180910390f35b6103eb60048036038101906103e69190613cfd565b6115de565b6040516103f89190614118565b60405180910390f35b61040961168a565b6040516104169190613b38565b60405180910390f35b6104276116b1565b6040516104349190613fdd565b60405180910390f35b61045760048036038101906104529190613cfd565b61170d565b005b61046161185d565b005b61047d60048036038101906104789190614131565b61190d565b005b610499600480360381019061049491906141f6565b611b8d565b6040516104a69190613b10565b60405180910390f35b6104c960048036038101906104c49190613cfd565b611e40565b6040516104d79291906142c6565b60405180910390f35b6104fa60048036038101906104f591906142ed565b611e6c565b6040516105079190613b10565b60405180910390f35b61051861210c565b60405161052591906144f0565b60405180910390f35b6105486004803603810190610543919061453a565b6122c7565b005b6105526123d0565b60405161055f9190613fdd565b60405180910390f35b610582600480360381019061057d9190613cfd565b6123e2565b005b61059e60048036038101906105999190614616565b612435565b6040516105ab9190613b38565b60405180910390f35b6105ce60048036038101906105c991906138ed565b61245f565b6040516105db9190613b38565b60405180910390f35b600281815481106105f3575f80fd5b905f5260205f2090600902015f91509050805f015f9054906101000a900460ff1690806001018054610624906146b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610650906146b9565b801561069b5780601f106106725761010080835404028352916020019161069b565b820191905f5260205f20905b81548152906001019060200180831161067e57829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b5f805f8060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481525050905080604001519350610783868661249a565b925060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549150509250925092565b5f600780549050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003602052805f5260405f205f915090505481565b5f600160095f8282546108269190614716565b925050819055505f60095490505f61083f86868661279d565b90505f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f816080015190508160800151421061092f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610926906147b9565b60405180910390fd5b5f8061093b33866128b2565b9150915061095c3385602001518d856109549190614716565b865f80612a63565b96508060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109aa9190614716565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a0c9190613b38565b602060405180830381865afa158015610a27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4b91906147eb565b90508b811015610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790614860565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308f6040518463ffffffff1660e01b8152600401610aee9392919061487e565b6020604051808303815f875af1158015610b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e91906148c7565b610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b649061493c565b60405180910390fd5b7f7f89f244e1ba6f246c289a29ad1d0de7c4c58d32e4b2d80f0f4f385f0edf1490338d604051610b9e92919061495a565b60405180910390a15050505050506009548114610bb9575f80fd5b50949350505050565b6006602052805f5260405f205f915090505481565b5f610be06116b1565b610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906149cb565b60405180910390fd5b5f5b8751811015610e5e575f60085f8a8481518110610c4157610c406149e9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16610d48576007898381518110610cad57610cac6149e9565b5b6020026020010151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600780549050610d249190614a16565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b610dd9898381518110610d5e57610d5d6149e9565b5b6020026020010151898481518110610d7957610d786149e9565b5b6020026020010151898581518110610d9457610d936149e9565b5b6020026020010151898681518110610daf57610dae6149e9565b5b602002602001015160018a8881518110610dcc57610dcb6149e9565b5b6020026020010151612a63565b50838281518110610ded57610dec6149e9565b5b602002602001015160065f8b8581518110610e0b57610e0a6149e9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610c21565b50600190509695505050505050565b5f600160095f828254610e809190614716565b925050819055505f60095490506002805490508610610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90614a93565b60405180910390fd5b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f60028881548110610f8957610f886149e9565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054610fca906146b9565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff6906146b9565b80156110415780601f1061101857610100808354040283529160200191611041565b820191905f5260205f20905b81548152906001019060200180831161102457829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090505f82602001519050888360200151106110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614afb565b60405180910390fd5b8160c001518360400151101561112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290614b89565b60405180910390fd5b8160e0015183604001511115611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d90614c17565b60405180910390fd5b5f61118289898961279d565b90505f8061119033846128b2565b9150915061119f338d84613062565b97508060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111ed9190614716565b925050819055507f8ef88319c897c85db21d2cf717d2b2fe331fa9ee56df3d74e41d63230e5127df33858e60405161122793929190614c35565b60405180910390a15050505050506009548114611242575f80fd5b50949350505050565b6112536116b1565b611292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611289906149cb565b60405180910390fd5b60055f9054906101000a900460ff166112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790614cda565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590614d68565b60405180910390fd5b5f8111611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790614df6565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016113cf92919061495a565b6020604051808303815f875af11580156113eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140f91906148c7565b5050505050565b5f600280549050905090565b61142a6116b1565b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906149cb565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61152b61382b565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505091506115d5848461249a565b90509250929050565b6115e661382b565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116f161307a565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6117156116b1565b611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906149cb565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90614e5e565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f944bcc95fa327acc87ec57ceaf15c73ecc170d87f40de1f822c14570285f78e9816040516118529190613b38565b60405180910390a150565b6118656116b1565b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b906149cb565b60405180910390fd5b60055f9054906101000a900460ff166118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e990614cda565b60405180910390fd5b5f60055f6101000a81548160ff021916908315150217905550565b600160095f82825461191f9190614716565b925050819055505f60095490505f61193885858561279d565b90505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090508060800151421015611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614ec6565b60405180910390fd5b5f80611a5233866128b2565b915091505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548284611aa19190614716565b611aab9190614716565b90505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f831115611b74578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b3292919061495a565b6020604051808303815f875af1158015611b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7291906148c7565b505b5050505050506009548114611b87575f80fd5b50505050565b5f611b966116b1565b611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc906149cb565b60405180910390fd5b5f8611611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614f2e565b60405180910390fd5b85881015611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190614f96565b60405180910390fd5b85871015611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490615024565b60405180910390fd5b5f6040518061012001604052806001151581526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018781526020018a815260200189815260200188815260200186815260200185815260200184815250905060028054905091505f60035f8481526020019081526020015f2081905550600281908060018154018082558091505060019003905f5260205f2090600902015f909190919091505f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001019081611d9f91906151df565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015550507f17c6b1e4d9de5efe4bdf6101852390e88fdd6c8869d8ed44374cc2cabd776eb6828c8c8c8c8c8c8c8c8c604051611e2a9a999897969594939291906152da565b60405180910390a1509998505050505050505050565b6008602052805f5260405f205f91509050805f015f9054906101000a900460ff16908060010154905082565b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613b38565b602060405180830381865afa158015611ee7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0b91906147eb565b905083811015611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4790614860565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611f8d9392919061487e565b6020604051808303815f875af1158015611fa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcd91906148c7565b61200c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120039061493c565b60405180910390fd5b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff166120f657600733908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007805490506120d29190614a16565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b612101338787613062565b935050505092915050565b60605f60028054905090505f8167ffffffffffffffff81111561213257612131613b59565b5b60405190808252806020026020018201604052801561216b57816020015b612158613863565b8152602001906001900390816121505790505b5090505f5b828110156122be576002818154811061218c5761218b6149e9565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff161515151581526020016001820180546121cd906146b9565b80601f01602080910402602001604051908101604052809291908181526020018280546121f9906146b9565b80156122445780601f1061221b57610100808354040283529160200191612244565b820191905f5260205f20905b81548152906001019060200180831161222757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250508282815181106122a6576122a56149e9565b5b60200260200101819052508080600101915050612170565b50809250505090565b6122cf6116b1565b61230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906149cb565b60405180910390fd5b6002805490508210612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906153b8565b60405180910390fd5b5f6002838154811061236a576123696149e9565b5b905f5260205f209060090201905081815f015f6101000a81548160ff0219169083151502179055507fb43464c32a3cc15ea31c3e13db7db00e57c742ba81008d107550cc22b2f53d3083836040516123c39291906153d6565b60405180910390a1505050565b60055f9054906101000a900460ff1681565b6123ea6116b1565b612429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612420906149cb565b60405180910390fd5b61243281613081565b50565b5f805f80612442856131aa565b9250925092506124548682858561320f565b935050505092915050565b6007818154811061246e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f6002826020015181548110612554576125536149e9565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054612595906146b9565b80601f01602080910402602001604051908101604052809291908181526020018280546125c1906146b9565b801561260c5780601f106125e35761010080835404028352916020019161260c565b820191905f5260205f20905b8154815290600101906020018083116125ef57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050815f01516126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790615447565b60405180910390fd5b5f826080015142116126b257426126b8565b82608001515b90505f6301e1338090505f836040015187106126da57836080015190506126e2565b836060015190505b8360a00151811015612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906154af565b60405180910390fd5b5f828560a001518660a00151846127409190614a16565b88604001518960600151886127559190614a16565b61275f91906154cd565b61276991906154cd565b612773919061553b565b61277d919061553b565b90508560a001518161278f9190614a16565b965050505050505092915050565b5f8242106127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906155db565b60405180910390fd5b5f90505f8414806127f057505f83145b806127fb57505f8251145b6128ab575f612809856133ae565b90505f612815856133ae565b90505f61282133613478565b83836040516020016128359392919061567d565b6040516020818303038152906040529050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166128888287612435565b73ffffffffffffffffffffffffffffffffffffffff16036128a7578693505b5050505b9392505050565b5f805f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161293a9061570d565b60405180910390fd5b5f816006015414612989576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298090615775565b60405180910390fd5b5f612994868661249a565b905042826006018190555080826005015f8282546129b29190614716565b925050819055505f825f015f6101000a81548160ff021916908315150217905550816002015460035f846001015481526020019081526020015f20546129f89190614a16565b60035f846001015481526020019081526020015f20819055507f7712eab9bace2a6db4db50e391a24280d3a83952dfa3067d0f5894a1acead37286836002015483604051612a4893929190614c35565b60405180910390a18160020154819350935050509250929050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612af3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aea906157dd565b60405180910390fd5b6002805490508610612b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b3190615845565b60405180910390fd5b5f60028781548110612b4f57612b4e6149e9565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054612b90906146b9565b80601f0160208091040260200160405190810160405280929190818152602001828054612bbc906146b9565b8015612c075780601f10612bde57610100808354040283529160200191612c07565b820191905f5260205f20905b815481529060010190602001808311612bea57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050805f0151612c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c92906158ad565b60405180910390fd5b5f60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050805f015115612d7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d7690615915565b60405180910390fd5b8160c00151871015612dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbd9061597d565b60405180910390fd5b8160e00151871115612e0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e04906159e5565b60405180910390fd5b5f861115612e675742861180612e205750845b612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e5690615a73565b60405180910390fd5b859250612ec2565b5f82610100015190505f8111612eb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ea990615adb565b60405180910390fd5b8042612ebe9190614716565b9350505b5f4290508515612f12575f8511612f0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0590615b43565b60405180910390fd5b8490505b5f6040518060e001604052806001151581526020018b81526020018a81526020018381526020018681526020015f81526020015f81525090508060045f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c082015181600601559050508860035f8c81526020019081526020015f20546130029190614716565b60035f8c81526020019081526020015f20819055507f7cc860bef2fa56b3d46227731e60b3b6ce0af9627bfdfbeca273f9ea5dae8a188b8a8c8860405161304c9493929190615b61565b60405180910390a1505050509695505050505050565b5f6130718484845f805f612a63565b90509392505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130e690615c14565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f60418451146131f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e890615c7c565b60405180910390fd5b602084015192506040840151915060608401515f1a90509193909250565b5f806040518060400160405280602081526020017f19457468657265756d205369676e6564204d6573736167653a0a30303030303081525090505f8087519050603983019150620f423f811115613264575f80fd5b5f80620186a090505b5f8114613303575f8184613281919061553b565b90505f81036132a7575f83036132a657600a8261329e919061553b565b91505061326d565b5b82806132b290615c9a565b93505081816132c191906154cd565b846132cc9190614a16565b9350600a826132db919061553b565b91506030816132ea9190614716565b905084806132f790615c9a565b9550508085535061326d565b5f820361331357601b9150613323565b601a826133209190614716565b91505b8185525f858b60405160200161333a929190615ce1565b6040516020818303038152906040528051906020012090506001818b8b8b6040515f81526020016040526040516133749493929190615d37565b6020604051602081039080840390855afa158015613394573d5f803e3d5ffd5b505050602060405103519650505050505050949350505050565b60605f60016133bc846134a5565b0190505f8167ffffffffffffffff8111156133da576133d9613b59565b5b6040519080825280601f01601f19166020018201604052801561340c5781602001600182028036833780820191505090505b5090505f82602001820190505b60011561346d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816134625761346161550e565b5b0494505f8503613419575b819350505050919050565b606061349e8273ffffffffffffffffffffffffffffffffffffffff16601460ff166135f6565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310613501577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816134f7576134f661550e565b5b0492506040810190505b6d04ee2d6d415b85acef8100000000831061353e576d04ee2d6d415b85acef810000000083816135345761353361550e565b5b0492506020810190505b662386f26fc10000831061356d57662386f26fc1000083816135635761356261550e565b5b0492506010810190505b6305f5e1008310613596576305f5e100838161358c5761358b61550e565b5b0492506008810190505b61271083106135bb5761271083816135b1576135b061550e565b5b0492506004810190505b606483106135de57606483816135d4576135d361550e565b5b0492506002810190505b600a83106135ed576001810190505b80915050919050565b60605f600283600261360891906154cd565b6136129190614716565b67ffffffffffffffff81111561362b5761362a613b59565b5b6040519080825280601f01601f19166020018201604052801561365d5781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110613694576136936149e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106136f7576136f66149e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600184600261373591906154cd565b61373f9190614716565b90505b60018111156137de577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613781576137806149e9565b5b1a60f81b828281518110613798576137976149e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c9450806137d790615d7a565b9050613742565b505f8414613821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161381890615deb565b60405180910390fd5b8091505092915050565b6040518060e001604052805f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518061012001604052805f15158152602001606081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6138cc816138ba565b81146138d6575f80fd5b50565b5f813590506138e7816138c3565b92915050565b5f60208284031215613902576139016138b2565b5b5f61390f848285016138d9565b91505092915050565b5f8115159050919050565b61392c81613918565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61397482613932565b61397e818561393c565b935061398e81856020860161394c565b6139978161395a565b840191505092915050565b6139ab816138ba565b82525050565b5f610120820190506139c55f83018c613923565b81810360208301526139d7818b61396a565b90506139e6604083018a6139a2565b6139f360608301896139a2565b613a0060808301886139a2565b613a0d60a08301876139a2565b613a1a60c08301866139a2565b613a2760e08301856139a2565b613a356101008301846139a2565b9a9950505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a6c82613a43565b9050919050565b613a7c81613a62565b8114613a86575f80fd5b50565b5f81359050613a9781613a73565b92915050565b5f8060408385031215613ab357613ab26138b2565b5b5f613ac085828601613a89565b9250506020613ad1858286016138d9565b9150509250929050565b5f606082019050613aee5f8301866139a2565b613afb60208301856139a2565b613b0860408301846139a2565b949350505050565b5f602082019050613b235f8301846139a2565b92915050565b613b3281613a62565b82525050565b5f602082019050613b4b5f830184613b29565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613b8f8261395a565b810181811067ffffffffffffffff82111715613bae57613bad613b59565b5b80604052505050565b5f613bc06138a9565b9050613bcc8282613b86565b919050565b5f67ffffffffffffffff821115613beb57613bea613b59565b5b613bf48261395a565b9050602081019050919050565b828183375f83830152505050565b5f613c21613c1c84613bd1565b613bb7565b905082815260208101848484011115613c3d57613c3c613b55565b5b613c48848285613c01565b509392505050565b5f82601f830112613c6457613c63613b51565b5b8135613c74848260208601613c0f565b91505092915050565b5f805f8060808587031215613c9557613c946138b2565b5b5f613ca2878288016138d9565b9450506020613cb3878288016138d9565b9350506040613cc4878288016138d9565b925050606085013567ffffffffffffffff811115613ce557613ce46138b6565b5b613cf187828801613c50565b91505092959194509250565b5f60208284031215613d1257613d116138b2565b5b5f613d1f84828501613a89565b91505092915050565b5f67ffffffffffffffff821115613d4257613d41613b59565b5b602082029050602081019050919050565b5f80fd5b5f613d69613d6484613d28565b613bb7565b90508083825260208201905060208402830185811115613d8c57613d8b613d53565b5b835b81811015613db55780613da18882613a89565b845260208401935050602081019050613d8e565b5050509392505050565b5f82601f830112613dd357613dd2613b51565b5b8135613de3848260208601613d57565b91505092915050565b5f67ffffffffffffffff821115613e0657613e05613b59565b5b602082029050602081019050919050565b5f613e29613e2484613dec565b613bb7565b90508083825260208201905060208402830185811115613e4c57613e4b613d53565b5b835b81811015613e755780613e6188826138d9565b845260208401935050602081019050613e4e565b5050509392505050565b5f82601f830112613e9357613e92613b51565b5b8135613ea3848260208601613e17565b91505092915050565b5f805f805f8060c08789031215613ec657613ec56138b2565b5b5f87013567ffffffffffffffff811115613ee357613ee26138b6565b5b613eef89828a01613dbf565b965050602087013567ffffffffffffffff811115613f1057613f0f6138b6565b5b613f1c89828a01613e7f565b955050604087013567ffffffffffffffff811115613f3d57613f3c6138b6565b5b613f4989828a01613e7f565b945050606087013567ffffffffffffffff811115613f6a57613f696138b6565b5b613f7689828a01613e7f565b935050608087013567ffffffffffffffff811115613f9757613f966138b6565b5b613fa389828a01613e7f565b92505060a087013567ffffffffffffffff811115613fc457613fc36138b6565b5b613fd089828a01613e7f565b9150509295509295509295565b5f602082019050613ff05f830184613923565b92915050565b5f805f6060848603121561400d5761400c6138b2565b5b5f61401a86828701613a89565b935050602061402b86828701613a89565b925050604061403c868287016138d9565b9150509250925092565b61404f81613918565b82525050565b61405e816138ba565b82525050565b60e082015f8201516140785f850182614046565b50602082015161408b6020850182614055565b50604082015161409e6040850182614055565b5060608201516140b16060850182614055565b5060808201516140c46080850182614055565b5060a08201516140d760a0850182614055565b5060c08201516140ea60c0850182614055565b50505050565b5f610100820190506141045f830185614064565b61411160e08301846139a2565b9392505050565b5f60e08201905061412b5f830184614064565b92915050565b5f805f60608486031215614148576141476138b2565b5b5f614155868287016138d9565b9350506020614166868287016138d9565b925050604084013567ffffffffffffffff811115614187576141866138b6565b5b61419386828701613c50565b9150509250925092565b5f80fd5b5f8083601f8401126141b6576141b5613b51565b5b8235905067ffffffffffffffff8111156141d3576141d261419d565b5b6020830191508360018202830111156141ef576141ee613d53565b5b9250929050565b5f805f805f805f805f6101008a8c031215614214576142136138b2565b5b5f8a013567ffffffffffffffff811115614231576142306138b6565b5b61423d8c828d016141a1565b995099505060206142508c828d016138d9565b97505060406142618c828d016138d9565b96505060606142728c828d016138d9565b95505060806142838c828d016138d9565b94505060a06142948c828d016138d9565b93505060c06142a58c828d016138d9565b92505060e06142b68c828d016138d9565b9150509295985092959850929598565b5f6040820190506142d95f830185613923565b6142e660208301846139a2565b9392505050565b5f8060408385031215614303576143026138b2565b5b5f614310858286016138d9565b9250506020614321858286016138d9565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61436e82613932565b6143788185614354565b935061438881856020860161394c565b6143918161395a565b840191505092915050565b5f61012083015f8301516143b25f860182614046565b50602083015184820360208601526143ca8282614364565b91505060408301516143df6040860182614055565b5060608301516143f26060860182614055565b5060808301516144056080860182614055565b5060a083015161441860a0860182614055565b5060c083015161442b60c0860182614055565b5060e083015161443e60e0860182614055565b50610100830151614453610100860182614055565b508091505092915050565b5f614469838361439c565b905092915050565b5f602082019050919050565b5f6144878261432b565b6144918185614335565b9350836020820285016144a385614345565b805f5b858110156144de57848403895281516144bf858261445e565b94506144ca83614471565b925060208a019950506001810190506144a6565b50829750879550505050505092915050565b5f6020820190508181035f830152614508818461447d565b905092915050565b61451981613918565b8114614523575f80fd5b50565b5f8135905061453481614510565b92915050565b5f80604083850312156145505761454f6138b2565b5b5f61455d858286016138d9565b925050602061456e85828601614526565b9150509250929050565b5f67ffffffffffffffff82111561459257614591613b59565b5b61459b8261395a565b9050602081019050919050565b5f6145ba6145b584614578565b613bb7565b9050828152602081018484840111156145d6576145d5613b55565b5b6145e1848285613c01565b509392505050565b5f82601f8301126145fd576145fc613b51565b5b813561460d8482602086016145a8565b91505092915050565b5f806040838503121561462c5761462b6138b2565b5b5f83013567ffffffffffffffff811115614649576146486138b6565b5b614655858286016145e9565b925050602083013567ffffffffffffffff811115614676576146756138b6565b5b61468285828601613c50565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806146d057607f821691505b6020821081036146e3576146e261468c565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614720826138ba565b915061472b836138ba565b9250828201905080821115614743576147426146e9565b5b92915050565b7f43616e6e6f742061646420746f6b656e7320746f206120636f6d706c657465645f8201527f207374616b650000000000000000000000000000000000000000000000000000602082015250565b5f6147a360268361393c565b91506147ae82614749565b604082019050919050565b5f6020820190508181035f8301526147d081614797565b9050919050565b5f815190506147e5816138c3565b92915050565b5f60208284031215614800576147ff6138b2565b5b5f61480d848285016147d7565b91505092915050565b7f496e73756666696369656e7420546f6b656e2042616c616e63650000000000005f82015250565b5f61484a601a8361393c565b915061485582614816565b602082019050919050565b5f6020820190508181035f8301526148778161483e565b9050919050565b5f6060820190506148915f830186613b29565b61489e6020830185613b29565b6148ab60408301846139a2565b949350505050565b5f815190506148c181614510565b92915050565b5f602082840312156148dc576148db6138b2565b5b5f6148e9848285016148b3565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f61492660158361393c565b9150614931826148f2565b602082019050919050565b5f6020820190508181035f8301526149538161491a565b9050919050565b5f60408201905061496d5f830185613b29565b61497a60208301846139a2565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6149b560208361393c565b91506149c082614981565b602082019050919050565b5f6020820190508181035f8301526149e2816149a9565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614a20826138ba565b9150614a2b836138ba565b9250828203905081811115614a4357614a426146e9565b5b92915050565b7f496e636f727265637420746965724964000000000000000000000000000000005f82015250565b5f614a7d60108361393c565b9150614a8882614a49565b602082019050919050565b5f6020820190508181035f830152614aaa81614a71565b9050919050565b7f43616e6e6f74207570677261646520746f206c6f7765722074696572496400005f82015250565b5f614ae5601e8361393c565b9150614af082614ab1565b602082019050919050565b5f6020820190508181035f830152614b1281614ad9565b9050919050565b7f5374616b6520616d6f756e74206973206c657373207468616e206d696e206c695f8201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b5f614b7360318361393c565b9150614b7e82614b19565b604082019050919050565b5f6020820190508181035f830152614ba081614b67565b9050919050565b7f5374616b6520616d6f756e74206973206d6f7265207468616e206d696e206c695f8201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b5f614c0160318361393c565b9150614c0c82614ba7565b604082019050919050565b5f6020820190508181035f830152614c2e81614bf5565b9050919050565b5f606082019050614c485f830186613b29565b614c5560208301856139a2565b614c6260408301846139a2565b949350505050565b7f456d657267656e637920746f6b656e207769746864726177616c7320686176655f8201527f206265656e2064697361626c6564000000000000000000000000000000000000602082015250565b5f614cc4602e8361393c565b9150614ccf82614c6a565b604082019050919050565b5f6020820190508181035f830152614cf181614cb8565b9050919050565b7f5769746864726177616c20616464726573732063616e6e6f74206265207468655f8201527f206275726e206164647265737300000000000000000000000000000000000000602082015250565b5f614d52602d8361393c565b9150614d5d82614cf8565b604082019050919050565b5f6020820190508181035f830152614d7f81614d46565b9050919050565b7f5769746864726177616c20616d6f756e74206d757374206265206772656174655f8201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b5f614de060288361393c565b9150614deb82614d86565b604082019050919050565b5f6020820190508181035f830152614e0d81614dd4565b9050919050565b7f4e6f206368616e676500000000000000000000000000000000000000000000005f82015250565b5f614e4860098361393c565b9150614e5382614e14565b602082019050919050565b5f6020820190508181035f830152614e7581614e3c565b9050919050565b7f436f6e7472616374206973206e6f74206f7665722079657400000000000000005f82015250565b5f614eb060188361393c565b9150614ebb82614e7c565b602082019050919050565b5f6020820190508181035f830152614edd81614ea4565b9050919050565b7f61707244656e6f6d696e61746f72206973206e6f74203e2030000000000000005f82015250565b5f614f1860198361393c565b9150614f2382614ee4565b602082019050919050565b5f6020820190508181035f830152614f4581614f0c565b9050919050565b7f6170724e756d657261746f72203c2061707244656e6f6d696e61746f720000005f82015250565b5f614f80601d8361393c565b9150614f8b82614f4c565b602082019050919050565b5f6020820190508181035f830152614fad81614f74565b9050919050565b7f617072426f6e75734e756d657261746f72203c2061707244656e6f6d696e61745f8201527f6f72000000000000000000000000000000000000000000000000000000000000602082015250565b5f61500e60228361393c565b915061501982614fb4565b604082019050919050565b5f6020820190508181035f83015261503b81615002565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261509e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615063565b6150a88683615063565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6150e36150de6150d9846138ba565b6150c0565b6138ba565b9050919050565b5f819050919050565b6150fc836150c9565b615110615108826150ea565b84845461506f565b825550505050565b5f90565b615124615118565b61512f8184846150f3565b505050565b5b81811015615152576151475f8261511c565b600181019050615135565b5050565b601f8211156151975761516881615042565b61517184615054565b81016020851015615180578190505b61519461518c85615054565b830182615134565b50505b505050565b5f82821c905092915050565b5f6151b75f198460080261519c565b1980831691505092915050565b5f6151cf83836151a8565b9150826002028217905092915050565b6151e882613932565b67ffffffffffffffff81111561520157615200613b59565b5b61520b82546146b9565b615216828285615156565b5f60209050601f831160018114615247575f8415615235578287015190505b61523f85826151c4565b8655506152a6565b601f19841661525586615042565b5f5b8281101561527c57848901518255600182019150602085019450602081019050615257565b868310156152995784890151615295601f8916826151a8565b8355505b6001600288020188555050505b505050505050565b5f6152b9838561393c565b93506152c6838584613c01565b6152cf8361395a565b840190509392505050565b5f610120820190506152ee5f83018d6139a2565b8181036020830152615301818b8d6152ae565b9050615310604083018a6139a2565b61531d60608301896139a2565b61532a60808301886139a2565b61533760a08301876139a2565b61534460c08301866139a2565b61535160e08301856139a2565b61535f6101008301846139a2565b9b9a5050505050505050505050565b7f74656d706c617465496e646578206f7574206f662072616e67650000000000005f82015250565b5f6153a2601a8361393c565b91506153ad8261536e565b602082019050919050565b5f6020820190508181035f8301526153cf81615396565b9050919050565b5f6040820190506153e95f8301856139a2565b6153f66020830184613923565b9392505050565b7f4e6f207374616b657220636f6e747261637420666f756e6400000000000000005f82015250565b5f61543160188361393c565b915061543c826153fd565b602082019050919050565b5f6020820190508181035f83015261545e81615425565b9050919050565b7f496e636f727265637420415052000000000000000000000000000000000000005f82015250565b5f615499600d8361393c565b91506154a482615465565b602082019050919050565b5f6020820190508181035f8301526154c68161548d565b9050919050565b5f6154d7826138ba565b91506154e2836138ba565b92508282026154f0816138ba565b91508282048414831517615507576155066146e9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615545826138ba565b9150615550836138ba565b9250826155605761555f61550e565b5b828204905092915050565b7f41637469766974792070726f6f6620657870697265642e2054727920616761695f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6155c560218361393c565b91506155d08261556b565b604082019050919050565b5f6020820190508181035f8301526155f2816155b9565b9050919050565b5f81905092915050565b5f61560d82613932565b61561781856155f9565b935061562781856020860161394c565b80840191505092915050565b7f2c000000000000000000000000000000000000000000000000000000000000005f82015250565b5f6156676001836155f9565b915061567282615633565b600182019050919050565b5f6156888286615603565b91506156938261565b565b915061569f8285615603565b91506156aa8261565b565b91506156b68284615603565b9150819050949350505050565b7f4e6f206f70656e207374616b6520666f722074686973207573657200000000005f82015250565b5f6156f7601b8361393c565b9150615702826156c3565b602082019050919050565b5f6020820190508181035f830152615724816156eb565b9050919050565b7f436f6e747261637420697320616c726561647920636c6f7365640000000000005f82015250565b5f61575f601a8361393c565b915061576a8261572b565b602082019050919050565b5f6020820190508181035f83015261578c81615753565b9050919050565b7f5374616b696e6720546f6b656e206973204e6f7420446566696e6564000000005f82015250565b5f6157c7601c8361393c565b91506157d282615793565b602082019050919050565b5f6020820190508181035f8301526157f4816157bb565b9050919050565b7f496c6c6567616c207469657249640000000000000000000000000000000000005f82015250565b5f61582f600e8361393c565b915061583a826157fb565b602082019050919050565b5f6020820190508181035f83015261585c81615823565b9050919050565b7f54696572206973206e6f742061637469766500000000000000000000000000005f82015250565b5f61589760128361393c565b91506158a282615863565b602082019050919050565b5f6020820190508181035f8301526158c48161588b565b9050919050565b7f5573657220616c7265616479206861732061207374616b6500000000000000005f82015250565b5f6158ff60188361393c565b915061590a826158cb565b602082019050919050565b5f6020820190508181035f83015261592c816158f3565b9050919050565b7f43616e6e6f74207374616b652062656c6f77206d696e206c696d6974000000005f82015250565b5f615967601c8361393c565b915061597282615933565b602082019050919050565b5f6020820190508181035f8301526159948161595b565b9050919050565b7f43616e6e6f74207374616b652061626f7665206d6178206c696d6974000000005f82015250565b5f6159cf601c8361393c565b91506159da8261599b565b602082019050919050565b5f6020820190508181035f8301526159fc816159c3565b9050919050565b7f437573746f6d2074696d657374616d702063616e6e6f7420626520696e2074685f8201527f6520706173740000000000000000000000000000000000000000000000000000602082015250565b5f615a5d60268361393c565b9150615a6882615a03565b604082019050919050565b5f6020820190508181035f830152615a8a81615a51565b9050919050565b7f4475726174696f6e2063616e6e6f7420626520300000000000000000000000005f82015250565b5f615ac560148361393c565b9150615ad082615a91565b602082019050919050565b5f6020820190508181035f830152615af281615ab9565b9050919050565b7f53746172742074696d657374616d702063616e6e6f74206265203000000000005f82015250565b5f615b2d601b8361393c565b9150615b3882615af9565b602082019050919050565b5f6020820190508181035f830152615b5a81615b21565b9050919050565b5f608082019050615b745f830187613b29565b615b8160208301866139a2565b615b8e60408301856139a2565b615b9b60608301846139a2565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615bfe60268361393c565b9150615c0982615ba4565b604082019050919050565b5f6020820190508181035f830152615c2b81615bf2565b9050919050565b7f696e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f615c6660188361393c565b9150615c7182615c32565b602082019050919050565b5f6020820190508181035f830152615c9381615c5a565b9050919050565b5f615ca4826138ba565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615cd657615cd56146e9565b5b600182019050919050565b5f615cec8285615603565b9150615cf88284615603565b91508190509392505050565b5f819050919050565b615d1681615d04565b82525050565b5f60ff82169050919050565b615d3181615d1c565b82525050565b5f608082019050615d4a5f830187615d0d565b615d576020830186615d28565b615d646040830185615d0d565b615d716060830184615d0d565b95945050505050565b5f615d84826138ba565b91505f8203615d9657615d956146e9565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f615dd560208361393c565b9150615de082615da1565b602082019050919050565b5f6020820190508181035f830152615e0281615dc9565b905091905056fea264697066735822122046ee30bfbe586258df647ad344f020ce2d27c8b1e6ad38ac6c19895e646a25f764736f6c634300081a00330000000000000000000000001e824b4fc5d96c9f16583cbd7eb3e208a6905aef00000000000000000000000011a31b833d43853f8869c9eec17f60e3b4d2a753